永发信息网

下面三个函数哪些会引发指针问题

答案:2  悬赏:0  手机版
解决时间 2021-02-19 03:40
  • 提问者网友:沦陷
  • 2021-02-18 03:12
A.
int * f1()
{int x=10;
return (&x);
}
B.
int * f2()
{int *ptr;
*ptr=10;
return ptr;
}

C.
int * f3()
{int * ptr;
ptr=(int*)malloc(sizeof(int));
return ptr;
}
我感觉都会...因为我调试了一遍,都不成功。
(以下是主程序,printf中的f1可换为f2或f3)
main()
{
printf("%d",f1());
system("pause");
}
(选项函数)
最佳答案
  • 五星知识达人网友:独钓一江月
  • 2021-02-18 04:00
首先 我觉得都可以打印出值 这个是毋庸置疑的 因为打印的都是地址的值
但是要注意下面一些问题
第一个出问题是因为函数调用完毕 释放内存 x因为是栈里面的内存函数调用完毕 内存释放 所以你找不到那个值了
第二个和第一个差不多 也是内存释放了 还有一个致命的错误就是定义指针时没把它指向NULL 一般定义一个指针时要把它初始化为NULL 否则指向有用的数据块时会发生致命的错误
第三个 一般不会出现什么错误吧 但是最好 int* ptr = NULL;
全部回答
  • 1楼网友:十年萤火照君眠
  • 2021-02-18 04:13
1、外部函数声明。注意它的参数是void(*)()的函数指针 2、run的函数定义,其实就是对函数指针的间接引用,它的参数所指向的函数开始运行。 3、task是一个数组,数组元素类型是void(*)()的函数指针 4、根据task_delay[i]的值,来决定是否调用task[i]的值,调用的话退出循环。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯