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

2024-12-03 07:04:15
推荐回答(2个)
回答1:

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));

回答2:

应该这样:

char **a;
int x;
scanf("%d",&x);
a=malloc(sizeof(char *)*x);
a[0]=malloc(sizeof(char)*20);
scanf("%s",a[0]);
puts(a[0]);
a[x-1]=malloc(sizeof(char)*30);
scanf("%s",a[x-1]);
puts(a[x-1]);