c语言二维数组 定义一个二维数组 a[2][2];scanf("%s",a[1]);是什么意思? C语言中如何定义动态二维数组并输出

作者&投稿:尹美 (若有异议请与网页底部的电邮联系)
就是将字符串 b拷贝到数组a中,这是一个复制函数,在string 头文件有定义,所以你可以查阅它的使用方法
那个二维数组就相当于 它的每个元素又是一维数组,上例相当于 有2个一维数组,每个数组又含有两个元素,所以a[1]就是第二个一维数组的首地址,可以用来输入字符串

这个是一个二维数组,最外面的括号就是总的数据
里面的每个括号都是下标中1的内容,举个例子
你上面的
哪样的话
那就是a[0][0]
=
1;
a[0][1]=2;
a[0][2]
没赋值
a[1][0]
=
4
;
a[1][1]=
5;其他的都没赋值

C语言,申请动态大小的二维数组的时候碰到点问题~~

int *a[2];
int n;/*n紧跟a定义*/
scanf("%d",&n);
a[2]=(int *)calloc(n,sizeof(int)); /*a[2] 数组越界啦,越界之后,就覆盖了n的值了*/

a[0]=(int *)calloc(n,sizeof(int));
a[1]=(int *)calloc(n,sizeof(int));

-----------------
我的意思是你定义了int a[2];
你只能访问a[0]和a[1],a[2]就是下标越界了

int (*a)[2];/*数组指针*/
int n;
scanf("%d",&n);
a=(int (*)[2])malloc(2,sizeof(int));

intmain()
{
int**p;//定义二维指针。
intm,n;//行数和列数。
inti,j;
scanf("%d%d",&m,&n);//输入行数和列数。
if(m<=0||n<=0)return-1;//行数或列数非法。
p=(int**)malloc(sizeof(int*)*m);//申请一组一维指针空间。
for(i=0;i<m;i++)
p[i]=(int*)malloc(sizeof(int)*n);//对于每个一维指针,申请一行数据的空间。
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&p[i][j]);//输入第i行第j列的数据。其中&p[i][j]也可以写作p[i]+j或者是*(p+i)+j.功能相同。
printf("输入的数组为%d行%d列:
",m,n);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)//这个循环可以输出一行元素。
printf("%d",p[i][j]);//输出i行j列的元素。
printf("
");//每行输入结束加换行符。
}
//释放内存
for(i=0;i<m;i++)
free(p[i]);
free(p);

return0;
}

扩展资料
c语言中通过函数传递二维数组
#include
void func(int n, int a[][size])
{
/* access array */
a[i][j];
}
void main()
{
int a[10][10];
func(10, a);
}