C语言malloc函数的使用问题
pArr=(structStudent*)malloc(sizeof(structStudent));pArr不是保存了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)了么 展开
pArr不是保存了malloc函数所分配的内存空间中首字节的地址,那么pArr的数据类型便是struct Student *类型
所以如果我写 f(pArr)
然后定义一个f函数 那么不应该这么写 void f(struct Student * p)
但为何却要发送f(&pArr)pArr不是本身便保存的地址么
而且如果这么写的话接受的时候不应该是
void f (struct Student ** p)了么 展开
3个回答
展开全部
看上去你要写个分配空间的函数 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. 标识符 pArr 对应一个一般是4字节或8字节的指针变量。这个变量用于存储 struct Student * 类型的内存地址。
2. 函数调用 f(pArrr) 是将该变量存储的内容传递给 f ,也就是传递那个 struct Student * 类型的地址进去。但因标识符作用域的关系,f 是不知道这个指针变量的内存位置的,它操作的只是栈空间内的一个副本指针变量而已。在这种情况下,以正常手段 f 无法修改 pArr 这个指针变量的值。
3. 函数调用 f(&pArr) 是将该变量在内存中的地址传递给 f ,正是那个 struct Student ** 类型的地址值。f 有了这个地址,对这个地址中的数据进行操作,就可以达成访问或修改 pArr 这个指针变量的效果。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询