问题描述
- C语言 数组问题 这俩有什么区别
- int (*a)[10]; 与int a [10]的区别
两者的return a;分别返回的是什么
还有两者的元素怎么引用
解决方案
这两者很不同。
int a[10];这里的a是一个常量,表示数组的首地址。数组存储的是int型数据。
int (*a)[10]; 这里的a是一个指针变量,指向一个数组,数组存储的是10个int型数据。
解决方案二:
一个是指针,一个是数组,用sizeof求值,以及free的时候都是不同的。
解决方案三:
int (*a)[10]; 中的a是一个指向整形数组的指针。int a【10】就是一个容量为10的int型数组
举例子说明:
void main()
{
int b[2][3] = {{1 2 3} {4 5 6}};
int (*c)[3] = b;
}
c指向了b b[i]中的每个元素都是一个指向3个int类型的指针, 所以c++就指向了b[1],也就是元素4的地址。
解决方案四:
int (*a)[10]是数组指针
int a [10]是数组
引用:
(*a)[n]
a[n]
解决方案五:
int a[10] :数组指针。数组a里存放的是10个int型指针 int (*a)[10] :a是指针,指向一个数组。此数组有10个int型元素 int *a[10] 先找到声明符a然后向右看,有[]说明a是个数组,再向左看,是int *,说明数组中的每个元素是int *。所以这是一个存放int指针的数组。 int(*a)[10] 先找到声明符a被括号括着,先看括号内的(优先级高),然后向右看,没有,向左看是,说明s是个指针,什么指针?在看括号外面的,先向右看,有[] 是个数组,说明a是个志向数组的指针,再向左看,是int,说明数组的每个元素是int。所以,这是一个指向存放int的数组的指针。 例 int *p[10]; int (*q)[10]; printf( ""*p[10]: %dn "" sizeof(p)); printf( ""(*q)[10]: %dn "" sizeof(q)); 结果是: *p[10]: 40 //说明p是一个数组名 (*q)[10]: 4 //说明q是一个指针
解决方案六:
其实主要的区别就是常量和变量把,我补充一下其他人说的,不知道对不对
解决方案七:
一个是指针,一个是数组啊
解决方案八:
其实可以看作 (int*) a[10]和int a[10],第一种数组里每个元素都是一个整型指针,第二个数组里每个元素都是一个整形。
解决方案九:
数组指针 数组 返回都是指向第一元素的地址.....
解决方案十:
关于怎么识别这类c语法结构(char * (*c[10]) (int **p) )到底是指针还是函数还是数组或其它),请参见c专家编程的 第三章。