C 44课后练习Vc6 ,使用问题
#include <stdio.h>void main()
{
int a={{45,21,16,99},{8,74,20,51},{5,62,3,}},i,j,b,(*p);
for (b=1;b<10;)
{
printf("i=");
scanf("%d",&i);
if (i>2 || i<0)
{
;
}
else
break;
}
for (b=1;b<10;)
{
printf("j=");
scanf("%d",&j);
if (j>3 || j<0)
{
;
}
else
break;
}
p=a;
printf("第%i行,第%d例存储的是:%d",i,j,*(*(p+i)+j) );
printf("\n");
}
请看图片右下角:*(*(p+i)+j) 为啥没有值? 为何没计算出值? 左面窗口明明计算出==0了。
而**((p+i)+j)就有值了;
你这代码没问题 截图运行结果也没问题啊 右边没计算出来是应为你没初始化那个值你是不完全初始化最后的值默认是0但是实际上内存的值不是0啊当然计算不出来了 本帖最后由 haiouda 于 2015-3-5 12:44 编辑
牡丹花下死做鬼 发表于 2015-3-5 12:35
右边没计算出来是应为你没初始化那个值你是不完全初始化最后的值默认是0但是实际上内存的值不是0啊当然计算 ...
定义数组时,缺少的元素,不是默认为是 0 嘛;何况后面的**(p+i+j)都得出结是了。它们二者都指象相同的内存地址,为何后者只有值?
haiouda 发表于 2015-3-5 12:42
定义数组时,缺少的元素,不是默认为是 0 嘛;何况后面的**(p+i+j)都得出结是了。它们二者都指象相同的 ...
是默认0但不是直接赋值为0而是你用的时候为0就好比为初始化的变量读取出来是-8什么什么的但内存的值不是这个啊
还有*垃圾数字 结果你觉得不是0是什么??? 本帖最后由 haiouda 于 2015-3-5 13:02 编辑
牡丹花下死做鬼 发表于 2015-3-5 12:48
是默认0但不是直接赋值为0而是你用的时候为0就好比为初始化的变量读取出来是-8什么什么的但内存的值不是 ...
一个有值,一个没有值多了括号,有点晕;现在看来好象是VC6.0 软件的事; 多谢热心回复{:5_110:}
haiouda 发表于 2015-3-5 12:52
一个有值,一个没有值多了括号,有点晕;现在看来好象是VC6.0 软件的事; 多谢热心回复
好吧指针地址问题可能我记错了~~~ haiouda 发表于 2015-3-5 12:52
一个有值,一个没有值多了括号,有点晕;现在看来好象是VC6.0 软件的事; 多谢热心回复
可这又怎么样?? 本帖最后由 haiouda 于 2015-3-5 13:13 编辑
牡丹花下死做鬼 发表于 2015-3-5 13:05
可这又怎么样??
最上面,第一个图; 是软件出错了,所以没得出值,现在分析只能这么认为了{:5_99:}
尽信书不如无书------------尽信软件(只做一次,就得出结论),不如无软件{:5_109:}
页:
[1]