首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一道C语言指针题目!

2012-03-16 
一道C语言指针题目!!!高手指点~~~#includestdio.hint *pmain(){int a1,b2,c3p&bpp(a+c,&b)print

一道C语言指针题目!!!高手指点~~~
#include<stdio.h> 
int *p;
main() 
{
int a=1,b=2,c=3;
p=&b;
pp(a+c,&b);
  printf("(1) %d %d %d\n",a,b,*p);
}
pp(int a,int *b)
{
int c=4;
*p =*b+c;
a=*p-c;
  printf("(2) %d %d %d\n",a,*b,*p);
}
结果是: (2) 2 6 6
  (1) 1 6 6
想问的是(2)这组中的(*b)为什么会是6?是因为b的地址所指向的内容因为
*p =*b+c;这句的关系一起改变了吗?最后导致回到main()函数后b也变成了6
是这样理解的吗?





[解决办法]
p=&b; 


以后p指向的位置就变成了b的内存所在的位置了。

*p =*b+c;
这个语句改变了p指向的内存的位置的值。

所以就都改变了。。
[解决办法]
你就理解基本上是对的。
[解决办法]
#include <stdio.h> 
#include <stdlib.h> 
int *p;
void pp(int a,int *b);
int main() 
{
int a=1,b=2,c=3;
p=&b;
pp(a+c,&b);
printf("(1) %d %d %d\n",a,b,*p);//a==1,b==6,*p==6
system("pause");
return 0;
}
void pp(int a,int *b)
{
int c=4;
*p =*b+c;//*p==*b==6
a=*p-c;//a==6-4
printf("(2) %d %d %d\n",a,*b,*p);//2 6 6
}
[解决办法]

[解决办法]
因为指针变量p所指向的是b的内存地址,
6==*p,所以6==b
不知可否这样理解?

热点排行