c语言指针题

[复制链接]
查看11 | 回复4 | 2007-9-24 15:26:50 | 显示全部楼层 |阅读模式
是有问题,现在的考试真难啊void main() { int a = 9,b = 6; int c;/*不定义这个,程序也可以运行,只是有造成系统异常或者崩溃的隐患*/int *result = &c; /*这样比较好,不会造成内存泄漏*/add(&a, &b, &result); printf("%d + %d = %d",a,b,*result); } void add(int *a,int *b,int** r) { **r = *a+*b; }
回复

使用道具 举报

千问 | 2007-9-24 15:26:50 | 显示全部楼层
这道题本身就有毛病其中的result没有初始化,也没有指向任何空间就传给add函数,本身就是错误的,当然也可以实现,在add函数中申请一块地址存放结果,把地址回传给result,但是那块地址的回收就控制不了了,容易造成内存泄漏void add(int *a,int *b,int** r){int *p=(int *)malloc(sizeof(int));*p=*a+*b;*r=p;}
回复

使用道具 举报

千问 | 2007-9-24 15:26:50 | 显示全部楼层
不管内存泄露的,呵呵:C:void add(int *x, int *y, int **s){*s = (int*)malloc( sizeof(int) );**s = *x + *y;}C++:void add(int *x, int *y, int **s){*s = new int(*x + *y);}不造成内存泄露的版本:void add(int *x, int *y, int **s){ static int n = 0; n = *x + *y; *s = &n;}
回复

使用道具 举报

千问 | 2007-9-24 15:26:50 | 显示全部楼层
恩,你回答的很好.
回复

使用道具 举报

千问 | 2007-9-24 15:26:50 | 显示全部楼层
void add(int *x,int *y,int *s){*s=*x+*y;}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行