#include <stdio.h>
int main()
{
int **p(void),**p1;
p1=p();
int i;
for(i=0;i<3;i++)
printf("%d ",*(p1[i]));
return 0;
}
int **p(void)
{
int a[3]={1,2,3},*p[3]={&a[0],&a[1],&a[2]},**p2;
p2=p;
return p2;
}
请问为什么主函数输出的不是整形数组a里面的数值
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- qzjhjxj 2024-03-19 21:45关注
因为 int a[3]={1,2,3},*p[3]={&a[0],&a[1],&a[2]},**p2; 都是函数里的局部变量,函数调用执行完后,都被从内存里释放了,所以再输出时就出错了,只要在函数里将这些变量设置为静态变量即可,修改如下,供参考:
#include <stdio.h> int main() { int** p(void), ** p1; p1 = p(); int i; for (i = 0; i < 3; i++) printf("%d ", *(p1[i])); return 0; } int** p(void) { static int a[3] = { 1,2,3 }, * p[3] = { &a[0],&a[1],&a[2] }, ** p2; // 修改 p2 = p; return p2; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 晶体塑性有限元——Damask求解
- ¥15 写出这个有没有人能写一下今天中午就要
- ¥30 设计一个图形用户界面来控制你机械臂的运动
- ¥30 3d打印机无法识别到SD卡,如何解决?(相关搜索:格式化)
- ¥15 RPG游戏架构设计和开发方法
- ¥15 前端返回pdf时不显示内容
- ¥50 如何在不能联网影子模式下的电脑解决usb锁
- ¥20 服务器redhat5.8网络问题
- ¥15 如何利用c++ MFC绘制复杂网络多层图
- ¥20 要做柴油机燃烧室优化 需要保持压缩比不变 请问怎么用AVL fire ESE软件里面的 compensation volume 来使用补偿体积来保持压缩比不变