我是 C 编程语言的新手。我有一个包含2个元素的指针数组。我想打印数组中的值。我写的代码
#include<stdio.h>
int main ()
{
int *bae[] = {10,12};
int i;
for(i=0;i<2;i++) {
printf("%d",*bae[i]);
}
return 0;
}
当我运行此代码时,它给了我一个警告:
warning: (near initialization for 'bae[0]') [enabled by default]
warning: initialization makes pointer from integer without a cast [enabled by default]
warning: (near initialization for 'bae[1]') [enabled by default]
希望你能帮助我找到解决方案
答案 0 :(得分:2)
bae
是一个int指针数组。如果您只想要一个数组,那么它应该是int bae[] = {10, 12};
然后,你可以printf("%d", bae[i]);
警告说的是什么(&#34;初始化使得指针来自整数而没有强制转换&#34;)是在存储它们时将10
和12
转换为int*
在bae
。
编辑:如果真的想要使用指针数组,那么你可以做这样的事情(虽然不可取,但绝不比我以前的答案好):
#include<stdio.h>
int main ()
{
int ten = 10;
int twelve = 12;
int *bae[] = { &ten, &twelve };
int i;
for(i=0;i<2;i++) {
printf("%d",*bae[i]);
}
return 0;
}
现在会打印10
和12
。
答案 1 :(得分:2)
#include <stdio.h>
int main ()
{
int bae[] = {10,12};
int i;
for(i=0; i<2; i++) {
printf("%d\n", bae[i]);
}
return 0;
}
产生输出:
10
12
答案 2 :(得分:0)
int *bae[] = {10,12};
这意味着bae是一个整数指针数组。
printf("%d",*bae[i]);
以上陈述等于*(bae + i)。所以它会尝试访问地址10和11的值,这会导致未定义的行为。