永发信息网

如何理解指向指针的指针

答案:2  悬赏:80  手机版
解决时间 2021-01-30 08:05
  • 提问者网友:几叶到寒
  • 2021-01-29 09:25
如何理解指向指针的指针
最佳答案
  • 五星知识达人网友:不甚了了
  • 2021-01-29 09:31
其实你的理解是完全正确的,只不过在这里你没有把malloc这个函数完全理解。函数CreateList()是为了创建一个列表。
所以根据你的第一段代码你会这样写:
LinkList* ha;
CreateList(&ha);
而根据你的第二段代码你会这样:
LinkList* ha;
CreateList(ha);
第二段代码的ha完全是如你所说的那样是值传递的。再看你的函数体,我们知道形参名为L,它所指向的地址会等于ha所指向的地址(也就是说L的值等于ha的值)。可是在你的函数体内你用malloc申请了一块内存,你把这块内存的地址赋值给了L(此时L的值就不再等于ha的值了)现在malloc所申请有内存也只有L能引用,而ha根本没有得到分配的内存。
如果用你的第一段代码:
我们知道传进去的是ha的地址。此时你把malloc申请的内存的地址赋值给*L,而*L刚好也就是ha。所以也就相当于给ha申请了一块内存。*L和ha都指向了新开辟的内存。这才算得上是真正的创建了一个列表。
malloc这个函数是在内存中申请一片空间,并返回指向这片空间的地址。
全部回答
  • 1楼网友:七十二街
  • 2021-01-29 10:51
指针函数不同于函数指针。 函数指针声明为指针,它与变量指针不同之处是,它不是指向变量,而是指向函数。 函数指针有两个用途:调用函数和做函数的参数. 指针函数是函数,函数返回的不是数值,而是指针。 写法: 返回类型标识符 *返回名称(形式参数表){ 函数体 } 例如: float *find(); main() { static float score[][4]={{60,70,80,90},{56,89,34,45},{34,23,56,45}}; float *p; int i,m; printf("enter id: 1 or 2 or 3:"); scanf("%d",&m); printf("goup %d data are:\n",m); p=find(score,m-1); for(i=0;i<4;i++) printf("%5.2f\t",*(p+i)); } float *find(float(*pionter)[4],int n) { float *pt; pt=*(pionter+n); return(pt); } 指针函数是不是很有用处,我也说不上来。不用它,也可以用别的方法写程序。用不用,是个人喜好。 但无论怎么说,指针函数,函数指针,指向指针的指针给了编程者更多的方法的选择,增加了灵活性和多样性。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯