C语言 计算机二级 函数 变量 指针

[复制链接]
查看11 | 回复5 | 2012-2-14 15:38:36 | 显示全部楼层 |阅读模式
1.函数没有声明2.第一个,p指向一个临时变量,出了这个函数之后即被释放,是个垃圾值;;第二个,没有释放内存,内存泄露。谢谢采纳...
回复

使用道具 举报

千问 | 2012-2-14 15:38:36 | 显示全部楼层
这两个错在一个地方。int fun(int *p){...}这个函数是新定义了一个p指针。函数内部都是对p(新)的操作,没有对实参进行任何操作(实参仍然是一个野指针) 修改:int fun(int **p){
*p=(int *)malloc(sizeof(int));}...
回复

使用道具 举报

千问 | 2012-2-14 15:38:36 | 显示全部楼层
修改下写的有点乱之前函数调用时会对每一个参数进行一个隐含的赋值操作int fun (int * pa)
{ //int *pa=p;
//请注意:这句是调用是隐含的动作。 int s;
pa=&s;
//不会改变实参变量p值,因此p的值并没有改变(即p的指向并没有被改变)。}int ...
回复

使用道具 举报

千问 | 2012-2-14 15:38:36 | 显示全部楼层
D中fun中的p申请的是动态内存,返回时的指针不能指向已经申请的内存,因为已经释放掉了!A中也是一样的问题,你可以搜索一下有关内存的思考题!你就会明白~...
回复

使用道具 举报

千问 | 2012-2-14 15:38:36 | 显示全部楼层
第一个:错误在fun()函数中没有写返回语句,应该修改如下:int * fun (int * p) {
int s;
p = &s;return p;}第二个:错误和第一个错误...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行