如果在函数中定义了一个指向局部变量的指针,那么在函数返回后:是不是 指针指向的地址没有变化,而是指针指向的地址里面的内容被销毁了?比如:int *f(){ int *p; p= &5; return p;}假设给p分配的地址是Oxddf7,那么函数返回后,p的值还是Oxddf7吗?
你理解的有误 p是指针,给他分配的地址是Oxddf7,那么p就代表Oxddf7,在Oxddf7中保存的就是指向的数据的地址,返回给调用函数的结果是Oxddf7中保存的数据,即p指向数据的地址,而不是Oxddf7;函数返回后,p就会被清理,也无效了,它的值就更无从说起了。 另外,p= &5;是错误的,不能对常量取地址,因此系统中根本不会给整型常量分配地址
int *f()定义的f为指针函数,也就是说该函数返回的是一个int类型的地址值
int *a;
a=f();假如你的p是指向0xddf7的,那么得到的a就是指向地址为
0xddf7的指针。
不过你的p= &5;是错误的,不能对常量取地址
int (*f)(int);声明f是一个指向int f()指针;
定义了函数int func(int x){return x}
f=func;
那么f(5)和func(5)的值相等,均为5;
也就是说指针f指向了函数func。
。