为什么我的数组初始化出现了这么一个不可思议的问题
#include <stdio.h>/*void get_array(int b []);
void get_array(int b [])
{
printf("sizeof(b)=%d\n",sizeof(b));
for(int i=0;i<10;i++)
{
printf("b[%d]=%d\n",b);
}
}*/
int main()
{
int a={0,1,2,3,4,5,6,7,8,9};
printf("sizeof(a)=%d\n",sizeof(a));
for(int i=0;i<10;i++)
{
printf("a[%d]=%d\n",a);
}
// get_array(a);
}
这么一个不可思议的问题,我不知道发生了什么,我该怎么解决了
抱歉啦,楼主要睡觉去了,暂时无法及时回复你 #include <stdio.h>
/*void get_array(int b []);
void get_array(int b [])
{
printf("sizeof(b)=%d\n",sizeof(b));
for(int i=0;i<10;i++)
{
printf("b[%d]=%d\n",b);
}
}*/
int main()
{
int a={0,1,2,3,4,5,6,7,8,9};
//printf("sizeof(a)=%d\n",sizeof(a));
printf("sizeof(a)=%lu\n",sizeof(a));
for(int i=0;i<10;i++)
{
//printf("a[%d]=%d\n",a);
printf("a[%d]=%d\n", i, a);
}
// get_array(a);
}
for(int i=0;i<10;i++)
{
printf("a[%d]=%d\n",a);
}
这个循环打印应该这么写 printf("a[%d]=%d\n",i,a); 一个是,我个人用vc6.0和vs2017测试的效果均为下图
至于你图片中的问题
最主要的是你这个
printf("a[%d]=%d\n",a);
写得不对,明明两个参数,你就传了一个a,这个a是数组地址,所以一个错误的用法得出奇葩或者错误答案并不奇怪(毕竟编译器现在越来越“智”,可能内部有很多优化)
改法其他大佬都提了,就不缀述了
这是我找的问题,改正以后数组初始化没有问题。#include <stdio.h>
/*void get_array(int b []);
void get_array(int b [])
{
printf("sizeof(b)=%d\n",sizeof(b));
for(int i=0;i<10;i++)
{
printf("b[%d]=%d\n",b);//这里有两个%d为什么只写一个参数b。
}
}*/
int main()
{
int a={0,1,2,3,4,5,6,7,8,9};
printf("sizeof(a)=%d\n",sizeof(a));
for(int i=0;i<10;i++)
{
// printf("a[%d]=%d\n",a);//这里有两个%d为什么只写一个参数b。
printf("a[%d]=%d\n",i,a);
}
// get_array(a);
} 4goodworld 发表于 2020-2-26 23:44
一个是,我个人用vc6.0和vs2017测试的效果均为下图
至于你图片中的问题
抱歉,刚刚检查了源程序,发现是prinft("a[%d]=%d",a); (复制过来后发生了错误),但是编译运行后还是上图所述的错误
页:
[1]