C语言函数调用上下文中的指针问题

全局指针做实参,子函数修改形参

C语言函数调用上下文中的指针问题

代码如上图,疑问如下:
1. main函数中调用func1()时传的是全局指针,在func1()函数中有对形参做增减操作,这种增减会影响全局指针的指向吗?

2. *a++ 究竟++先执行还是*先执行

运行结果

C语言函数调用上下文中的指针问题

得出结论

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修饰的对象。