C语言函数调用上下文中的指针问题
目录
全局指针做实参,子函数修改形参
代码如上图,疑问如下:
1. main函数中调用func1()时传的是全局指针,在func1()函数中有对形参做增减操作,这种增减会影响全局指针的指向吗?
2. *a++ 究竟++先执行还是*先执行
运行结果
得出结论
1. main函数中调用func1()时传的是全局指针,在func1()函数中有对形参做增减操作,这种增减会影响全局指针的指向吗?
答:不会影响,操作的是形参,形参相当于局部变量,作用域仅在本函数内,生存期是本函数结束自己就消亡。
2. *a++ 究竟++先执行还是*先执行
答:*的优先级最低,而++是右结合,故先a++,后再取内容。类似的还有 *p->num ,也是右结合。 &p->num 同样是右结合。
const与*的结合
1.char const *ptr;
内容是常量,指针本身可变
2.const char *ptr;
与上面一样,内容是常量,指针本身可变
3.char * const ptr;
指针本身是常量,但他所指向的内容可变
总结:
紧挨着const后面的词才是被const修饰的对象。