第一题
#include
void f(int *pm)
{int m=6;
pm=&m;//*pm=6,pm指向本函数的里变量m
(*pm)++;//*pm=7,改变的本函数里的变量m,调用结束
}
main()
{int m=5;
f(&m);
printf("%d\n",m);//输出5
}
第二题
#include
void fun(int *p)
{int x=6;
//p=&x;
*p=x++;
/*相当于*p=x,x++ 即*p=6 ,x=7
因为p指向主函数里的变量x的,所以相当于主函数里的变量x=6
*/
}
main()
{int x=3, *p=&x;//p指向x
fun(p);
printf("%d\n",x);//经分析输出6
}
//说明:我在VC++6.0编译环境里运行通过了。解指针方面题,主要看指针变量是指向谁的
//如果是对指针变量操作,则是改变指针的指向,如p++;这里设p为指针变量
//如果是对指针变量区内容并进行操作,则是改变它所指变量的值,如int *p=&a;(*p)++
//上面的式子相当于a++;
//希望能够帮助到你,不懂的可追问哦
5
和 f函数m的定义没什么关系
主函数里给m定义了
把p=&x;注释掉,两题有区别
5
变量的作用域