每天下午肚子胀气?:关于C语言的一个问题
来源:百度文库 编辑:高考问答 时间:2024/08/26 23:23:34
#include<stdio.h>
void prt(int*x,int*y,int*z)
{printf("%d,%d,%d\n",++*x,++*y,*(z++));}
main()
{int a=10,b=40,c=20;
prt(&a,&b,&c);
prt(&a,&b,&c);}
答案是多少啊?为什么啊?
C怎么不变啊???
请问为什么20 会不变呢?
void prt(int*x,int*y,int*z)
{printf("%d,%d,%d\n",++*x,++*y,*(z++));}
main()
{int a=10,b=40,c=20;
prt(&a,&b,&c);
prt(&a,&b,&c);}
答案是多少啊?为什么啊?
C怎么不变啊???
请问为什么20 会不变呢?
答案是:
11,41,20
12,42,20
c的值不变关键就在于*(z++)表示的是一个指针,而不是一个值,指针做自加运算仍然为指向该单元的指针,因为原指针为指向一个int型的变量;而++*x表示指针x指向单元的值做自加运算,执行完第一条prt(&a,&b,&c)语句后,x,y指针指向的单元里的值均已经改变,而z指针指向的单元的值没有改变.
同意
C不变的原因是:“&C”是个地址常量,&C++没有用
11,41,20
12,42,20
c的值不变关键就在于*(z++)表示的是一个指针,而不是一个值,指针做自加运算仍然为指向该单元的指针,因为原指针为指向一个int型的变量;而++*x表示指针x指向单元的值做自加运算,执行完第一条prt(&a,&b,&c)语句后,x,y指针指向的单元里的值均已经改变,而z指针指向的单元的值没有改变.
C不变的原因是:“&C”是个地址常量,&C++没有用
11,41,20
12,42,20
c的值不变关键就在于*(z++)表示的是一个指针,而不是一个值,指针做自加运算仍然为指向该单元的指针,因为原指针为指向一个int型的变量;而++*x表示指针x指向单元的值做自加运算,执行完第一条prt(&a,&b,&c)语句后,x,y指针指向的单元里的值均已经改变,而z指针指向的单元的值没有改变.
C不变的原因是:“&C”是个地址常量,&C++没有用
共享一个内存