关于二维指针问题及二维数组问题

来源:百度知道 编辑:UC知道 时间:2024/05/15 03:28:13
int a[3][3],**p;
p=a
会报错 为什么
我输入了一个值给N
然后定义了a[N][N]
也会报错 请问如何解决
谢谢高手了

这样可以。

#include<stdio.h>

void main()
{
#define N 3
int a[N][N],*p[N];
int i;
for (i=0;i<N;i++) p[i]=a[i];
// .....
}

变量a的类型是int (*)[3],这和int **不同。
a[N][N],如果N是define的,可以通过;如果是变量,就通不过。

理由俺不想解释太多了,有些问题需要自己去研究,才能记忆深刻。

a[N][N] 这个表达就肯定不行的了,因为N是变量,不能定义指针。
int a[3][3],**p;
p=a这个怎么错呢,c++已经忘得差不多了,所以不肯定。会不会是
int a[3][3],*p;

**p 要改成 *p

c语言不允许对数组的大小作动态定义,可以是常量,但不能是变量。

应该是int a[3][3],*p;
p=a;

p=new int *;
*p=a;