在C语言中,以下代码执行之后,*p的值为()
void func(int *p){ static int num = 4; p = # (*p)--; } int main(){ int i = 5; int *p = &i; func(p); printf("%d", *p); return 0; }
A、3 B、4 C、5 D、以上都不是
func没改变实参所指的地址
没有返回,没什么关系了
不是很懂
函数的p指针保存num地址,(*p)--是对num的操作,跟外部p无关
C
在函数里...
用户登录可进行刷题及查看答案
在函数里,指针p又重新定位成num的地址空间,所以在函数中的自减是修改num的值;而当在main函数中的p指针依然指向 i 的地址空间,在func中没有被修改,那么值不变;
如果函数去掉num,如下:
void func(int *p) { (*p)--; }
void func(int *p)
{
(*p)--;
}
此时,就是修改 main函数中 i 的值了。
详细分析:
如上图,当调用函数的时候,形参指针p会指向实参指针p 所指向的地址空间;
在题目的 func 函数中,形参指针p 指向了新的地址空间num,如下图:
那么此时修改形参p 所指向地址空间的值,是不会影响 实参指针p和i 的值。
登录后提交答案