C语言malloc函数的使用问题

pArr = (struct Student*)malloc(sizeof(struct Student));
pArr不是保存了malloc函数所分配的内存空间中首字节的地址,那么pArr的数据类型便是struct Student *类型
所以如果我写 f(pArr)
然后定义一个f函数 那么不应该这么写 void f(struct Student * p)
但为何却要发送f(&pArr)pArr不是本身便保存的地址么
而且如果这么写的话接受的时候不应该是
void f (struct Student ** p)了么

看上去你要写个分配空间的函数 f 。

1. 标识符 pArr 对应一个一般是4字节或8字节的指针变量。这个变量用于存储 struct Student * 类型的内存地址。
2. 函数调用 f(pArrr) 是将该变量存储的内容传递给 f ,也就是传递那个 struct Student * 类型的地址进去。但因标识符作用域的关系,f 是不知道这个指针变量的内存位置的,它操作的只是栈空间内的一个副本指针变量而已。在这种情况下,以正常手段 f 无法修改 pArr 这个指针变量的值。
3. 函数调用 f(&pArr) 是将该变量在内存中的地址传递给 f ,正是那个 struct Student ** 类型的地址值。f 有了这个地址,对这个地址中的数据进行操作,就可以达成访问或修改 pArr 这个指针变量的效果。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-01
对头,楼主正解,不需要我们回答了。
第2个回答  2012-12-01
"但为何却要发送f(&pArr)"
这句话从何而来?
相似回答