malloc在子函数的问题
来源:互联网 发布:电脑合成配音软件 编辑:程序博客网 时间:2024/04/28 02:45
在子函数里用malloc给参数变量分配空间,变量赋值后,主函数的值不会变。原因:malloc出来的地址跟main中声明的变量的地址是不一样的,子函数中的赋值语句只是给malloc出来的那个空间付了值
解决方法:在主函数定义变量时,定义成指针变量。调用时加&,在子函数的参数里用**。
例1:
void main()
{
int *a;
f(&a);
}
int f(int **a)
{
(*a)=(int *)malloc(sizeof(a));
**a=100;
}
这种,a的值会返回给主函数变量a。
例2:
struct ss{
int a;
};
void main
{
struct ss *t;
f(&t);
printf("%d\n",t->a);
}
int f(struct ss **t)
{
*t=(struct ss *)malloc(sizeof(t));
(*t)->a=100;
}
能输出正确结果:100;
解释:struct ss **t中t是指向struct ss *类型变量的指针,给*t赋值就是给函数外面struct ss *类型的变量赋值,主函数的*t就能访问malloc出来的那块内存。
0 0
- malloc在子函数的问题
- C语言在子函数中调用malloc申请内存的方法
- 指针在子函数中动态分配空间的问题及解决方法
- // 在利用子函数实现内存堆分配的实现时出现的问题,同时也需要利用子函数实现内存堆的释放。
- 主函数调用子函数返回局部变量的问题及子函数的局部变量在函数结束后是否会销毁变量的内容
- 使用子函数开辟内存的问题
- 关于子函数中用new的问题
- VTK 子函数返回SmartPointer的问题
- 在子函数中改变指针变量的值的方法
- 子函数参数名与全局变量参数名相同 使全局变量在子函数中失效 #define 宏定义的值在子函数里变为0
- 在子函数中改变字符数组的值
- 在函数调用/子函数中进行动态内存的分配
- 关于子函数变量生命周期以及指针的一些问题
- malloc和free在开发中遇到的问题
- 函数调用子函数,注意子函数的位置
- 奇怪的malloc问题!
- malloc(0)的问题
- malloc(0)的问题
- qmake和moc的功能(★firecat推荐★)
- python下的MySQLdb使用
- 巧用支菲律宾太阳城付宝 生涯理财十招
- 人头数据标注
- 【总结】深入JVM之类执行机制
- malloc在子函数的问题
- 将 析构函数 声明为 虚函数 的必要性
- 干货!谷歌推荐的技术能力提升指南
- codeforces 387D George and Interesting Graph(二分图最大匹配)
- 黑马程序员——JavaSE学习笔记---IO(第一部分)
- CSUOJ1230--平面上的点
- 百度地图点击出现圆圈
- 如何创建一个Activity,两个Activity 之间如何通讯
- IOS之同步请求、异步请求、GET请求、POST请求