- 主题:这个程序的输出是多少
我运行了很多次,一直是3,0
你为什么不去试试呢
【 在 jimmycmh 的大作中提到: 】
: 都说了可以是任意值了,同一个程序每次运行都很可能不一样
:
: 你还是多看看基础吧,思而不学则怠
: ...................
--来自微微水木3.5.12
--
FROM 171.10.152.*
从没见过他的教材
你是高手的话,不如来好好回答下我这个问题
【 在 cafitren 的大作中提到: 】
: lz是谭浩强教出来的高材生吧。
:
: 【 在 l234567890 的大作中提到: 】
: ...................
--来自微微水木3.5.12
--
FROM 171.10.152.*
#include<stdio.h>
main()
{int a,b[5];
a=0; b[0]=3;
printf("%d,%d,%d,%d,%d\n",b[0],b[1],b[2],b[3],b[4]);
printf("%X,%X,%X,%X,%X\n",&b[0],&b[1],&b[2],&b[3],&b[4]);
printf("%X\n",&a); }
3,0,4195376,0,-1214538064
B79B9DB0,B79B9DB4,B79B9DB8,B79B9DBC,B79B9DC0
B79B9DCC
===========
gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
【 在 gaofei 的大作中提到: 】
: 把b[0]到b[4]都输出出来看看
--
FROM 218.29.119.*
#include<stdio.h>
main()
{int a,c[100],b[5];
a=0; b[0]=3;
printf("%d,%d,%d,%d,%d\n",b[0],b[1],b[2],b[3],b[4]);
printf("%X,%X,%X,%X,%X\n",&b[0],&b[1],&b[2],&b[3],&b[4]);
printf("%X\n",&a); }
3,0,-615959984,32765,1922528992
DB493050,DB493054,DB493058,DB49305C,DB493060
DB49320C
【 在 gaofei 的大作中提到: 】
: 中间那句改成int a,c[100],b[5]
: 再试试
--
FROM 218.29.119.*
你不解答可以不回答
你说了一堆有任何价值吗
【 在 flw 的大作中提到: 】
: >> 随便
: >> 都吃了十几年的青椒土豆丝了,你为什么就不能换个花样呢?
: >> 随便!
: ...................
--
FROM 218.29.119.*
这种回答比@flw这种好上百倍
【 在 sailorm 的大作中提到: 】
: 没有初始化的内存,我理解就是只把地址分配给你了,有可能里面还留着以前你没用过之前的随便的数据,可以是任意值
: 你每次重新编译,换平台编译,都会造成任意值的变化
: 发自「今日水木 on LDN-AL00」
: ...................
--
FROM 218.29.119.*
第一阶段已经知道了
所以才会纠结这个值是0,而且运行很多次还是0
你如果可以解答就解答
不会的话就不要不懂装懂了
【 在 echong 的大作中提到: 】
: 就你目前的阶段,知道未初始化的变量值不一定就够了,有兴趣的话,等多一些实践和知识了,再回来看这个问题的根本。不要过多纠结了
--
FROM 218.29.119.*
test.c: In function ‘main’:
test.c:5:1: error: parameter name omitted
int main(int,char**)
^
test.c:5:1: error: parameter name omitted
test.c: In function ‘foo1’:
test.c:22:5: error: ‘for’ loop initial declarations are only allowed in C9
9 mode
for( int i=0; i<100; ++i ) a[i] = 111;
^
test.c:22:5: note: use option -std=c99 or -std=gnu99 to compile your code
出错了
【 在 liuxueshen 的大作中提到: 】
: 试试这个:
: void foo();
: void foo1();
: ...................
--
FROM 218.29.119.*
3,32767
3,111
执行出来是这个结果
多次执行,上面第二个偶尔会有变化,下面的一直不变
【 在 liuxueshen 的大作中提到: 】
: 试试这个:
: void foo();
: void foo1();
: ...................
--
FROM 218.29.119.*
看来经过foo1()执行后,那块区域都被填充为111,了再执行foo()的时候,新分配的空
间还在那个区域,所以一直是111
多谢解惑
【 在 liuxueshen 的大作中提到: 】
: 试试这个:
: void foo();
: void foo1();
: ...................
--
FROM 218.29.119.*