c语言初始数组时说语法错误...请问是哪里错了?

来源:百度知道 编辑:UC知道 时间:2024/06/08 00:16:28
#include "stdio.h"
#define N 3
void creat(int x[][N]);
void output(int x[][N]);
void main()
{
int y[N][N];
creat(y);
getch();
}
void creat(int x[N][N])
{

x[N][N]={1,2,3,4,5,6,7,8,9};/*为什么不可以这样赋值*/
}
void output(int x[][N])
{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%d",x[i][j]);
}
printf("\n");
}
}

请问这里错了哪里呢?为什么这样说...
主函数里面还少了 output(y);
就在creat(y);
后面...
因为我要初始化后输出

int a[3][3]={{1,2,3},{2,3,4}};
申明的时候就要赋值 而且要这么写

二维数组的初始化(在数组申明时)可以采用多种形式:

(1)以行为单位初始化二维数组。
例如: int a[3][4]={{1,4,3,8},{5,3,2,1},{9,4,3,7}};产生的二维数组如下所示:

(2)如果只给出了部分初始化值,则其余元素的值为0。
例如:int a[3][4]={{1},{5,3},{9,4,3}};产生的二维数组如下所示:

(3)如果在初始化时给出了全部数组元素的值,则可以省略二维数组第一维大小的定义,这时将由编译程序根据列数和初始化值个数确定第一维的大小。
例如: int a[ ][4]={{1,4,3,8},{5,3,2,1},{9,4,3,7}};
(4)如果以单个数据的形式逐个给出初始化值,则以按行存储的方式为数组元素赋值。
例如:int a[3][4]={1,5,3,9,4,3};产生的二维数组

- -!好强大啊
x[N][N]是一个元素,也就是x[3][3],最后一个元素
你想这样赋值的话就必须在申请事就赋值
int x[N][N]={{1,2,3},{4,5,6},{7,8,9}}

C语言中对多维数组的赋值问题是这么定义的:
1.一种是int a[3][3]={1,2,3,4,5,6,7,8,9};这种方式要求在定义的同时立即初始化
2.另一种就是可以先定义后初始化了,
例: int x[3][3];//先定义
x[3[3]={{1,2,3},{4,5,6},{7,8,9}};//注意初始化的格式差别
这样应该明白你的为什么错了吧