错误的正确语法是:
arr[n] = {10,20,50,40,80,70,30};
但它显示错误:“表达错误”
但它允许:
arr[n] = (10,20,50,40,80,70,30);
而且我也没有得到预期的输出!怎么了?
void main()
{
node *head,*P;
int n,i,arr[];
clrscr();
n=6;
arr[6] = {10,20,50,40,80,70,30};
head=(node*)malloc(sizeof(node));
head->data=arr[0];
head->next = NULL;
P=head;
for(i=1;i<n;i++)
{
P->next=(node*)malloc(sizeof(node));
P=P->next;
P->next=NULL;
P->data=arr[i];
}
P=head;
while(P!=NULL)
{
printf("%d",P->data);
P=P->next;
printf("----->");
}
getch();
}
我的C程序代码!
答案 0 :(得分:4)
因为{}
代表数组初始化。唯一可以接受的方法就是:
int arr[] = {10,20,50,40,80,70,30};
但是第二行方式(适用于你)并没有达到预期效果。它实际上是comma operator。所以,这一行类似于
arr[n] = 30; // the last expression in a comma operator
答案 1 :(得分:0)
您无法对C中的数组进行此类动态初始化。
您应该省略n
并执行:
int arr[] = {10,20,50,40,80,70,30};
你不应该这样做:
int arr[]; //initialization
arr[6] = {10,20,50,40,80,70,30}; //assignment
因为,它不是初始化。它是赋值,C不允许你这样做。