【发布时间】:2015-03-14 18:27:57
【问题描述】:
我是c新手
所以在 c 中, 如果我在 main 方法中执行以下操作,
int* a = malloc( sizeof( int ) );
a[0] = 1;
printf( "%x\n", a ); // 1d02230
printf( "%x\n", &a ); // 4bed1c00
printf( "%x\n", a[0] ); // 1
printf( "%x\n", &a[0] ); // 1d02230
这对我来说很有意义。 但是当我执行以下操作时,
int b[] = {1};
printf( "%x\n", b ); // 4bed1bf0
printf( "%x\n", &b ); // 4bed1bf0
printf( "%x\n", b[0] ); // 1
printf( "%x\n", &b[0] ); // 4bed1bf0
这对我来说没有意义......看起来b是一个指向它自己地址的指针,它也带有值1。我怀疑它与b是一个静态数组有关,但是怎么做我明白了????
【问题讨论】:
-
@CarlNorum:在第二个示例中,
b是int的数组,而不是指针数组。 -
阅读comp.lang.c FAQ的第6部分。
-
@KeithThompson 这是我的错误,我最初有一个错字,我输入了 int* b[]。后来我更正了。
-
@CarlNorum:对不起,我应该检查一下编辑历史。
-
没问题。评论已删除;我修正了我的答案以匹配。