C语言中定义数组时能不能在未对最前几个初始化时就直接对后面的某个变量赋值

请讲解下,C语言中定义数组时能不能在未对最前几个初始化时就直接对后面的某个变量赋值
最新回答
含朕的龙根

2024-06-04 00:42:02

我的理解是不可以的(如果一定的话将会达不到期望),先看下边的程序,你自己上机调试一下吧!!!
#include<stdio.h>
int main()
{
int a[5]={0,0,3,4};//此处没有赋最后一个值,系统会默认最后一个元素是0;但如果这样赋值\
int a[5]={,,3,4};将不能编译通过!!!
int i;
for(i=0;i<5;i++)
printf("%3d",a[i]);
printf("\n");
printf("*********************************\n");

//下面虽可以编译通过但除了b[1]的值确定,但其他元素的值是无法预测的!!!
int b[5];
b[2]=1;
int j;
for(j=0;j<5;j++)
printf("%15d",b[j]);
printf("\n");
printf("*********************************\n");
return 0;
}

因此我的感受是多上机多调试多总结!!!
天边シ深海

2024-06-04 05:10:02

可以
赋值什么时候都可以对任何位置赋值的 数组不管它前面的位置是否已经初始化
追问
谢谢,能否给个示例,具体该怎么编写
追答
int a[100],b[100]={1,2};

a[10]=1;//这里随便赋值

int c[10][10]={{}, {1,1}};//部分赋值
如果要在这时候单独给某个元素赋值不方便
但是可以在后面

c[9][8]=10;
陌生De自我ヾ忘却

2024-06-04 01:17:32

比如
int a [10]={ , , , , ,4 ,3 , ,0,}
只需要空出你不想赋值的为就可以 了,一定不要忘记逗号隔开,因为数组是顺序存储。
希望你采纳哈不懂可以追问
追问
这样子确实无法通过编译哦
追答
#include 
#define N 10
int main(int argc, char *argv[])
{
int arr[N] = { [0]=1,[1]=5, [2]=2, [9]=10 };
printf("arr[0]=%d, arr[1]=%d,arr[2]=%d, arr[9]=%d\n", arr[0], arr[1], arr[2],arr[9]);
printf("end\n");
return 0;
}

gcc(因为main函数带参数,所以就只能用这个编译)编译后运行结果:
arr[0]=1, arr[1]=0,arr[2]=2, arr[9]=10
end
你可以自己试试 我去图书馆为你找的哦。 望采纳