不知道你问的内存问题是什么意思。
程序代码:
#include<stdio.h>
void f(int**q)
{
int i=5;
*q=&i;//*q=p=&i;
}
int main(void)
{
int *p;
f(&p);
printf("i=%d\n",*p);
return 0;
}
int **q;int *p; *q=&p;
int **q;int i=5; *q=&i;
上面基本是指针赋值的形式
参考上面的基本赋值,可以延伸到函数调用。
int *p;
f(&p);//指针p用来做f(int **q)函数的实参.f(int **q)中的参数是形参.
但有一个问题:
f(&p);
printf("i=%d\n",*p);
指针p做为实参传递给f()函数,由于楼主写的f函数并未返回值。因此,f函数执行完毕后,不会返回临时变量值。
如果楼主需要在主函数中调用f函数的返回值,应该这样定义f函数
程序代码:
int f(int**q)
{
int i=5;
*q=&i;//*q=p=&i;
return *p;
}
在main数中,需要声明一个指针保存f函数返回的值。
int *temp;
temp=f(&p);
然后再打印temp
以上讲的是函数参数调用与返回的形式过程,细节点楼主自行思考并解决。
关于这部份知识,楼主可看c primer plus和c与指针
这两本书。
普通人之所以普通,是因为他们普遍有一个通病,那就是认为自己永远普通。
千夫所指,我亦坚持。就算被所有人误解,我也照样守护这一切。
我们总是觉得,这些灵魂的表情,傲慢自大,目中无人,其实,真正目中无人的是我们。它们傲慢的不过是表情,而我们傲慢的却是行为!
记得,是为了忘记!
只要想着有那么一天,我就能忍受现在的每一天!
灾难并不可怕,可怕的是心中没有了希望。
你以为我在天堂,其实我正在路上。
当你觉得自己走不到终点的时候,请不要放弃。或许你的对手也是这种感觉。