对于二维数组名a和*a,二者的区别在于类型不同。对于 TYPE a[M][N];当使用a时,可以等同于二级指针TYPE **型。而使用*a时,等同于TYPE*型。从概念上说,a表示二维数组a的首地址,而*a表示二维数组a第一行a[0]的首地址。这样在使用的时候就有所区别。比如 对a的操作a[4]表示a的第四行首...
用gdb调试看a和&a的区别更加一目了然 Breakpoint 1, main () at 2.c:14 14 return (0); (gdb) display &a 1: &a = (int (*)[20]) 0x7fffffffe230 (gdb) display a 2: a = {-7360, 32767, -136384785, 32767, 0, 0, 0, 16711680, 1, 0, 4195789, 0, 0, 0, 0, 0, 4195712,...
区别就是a是一个指针,指向的地址是a[0]的地址,而a[0]就相当于一个变量,就是&a
int n[5] = {[4]=5,[0]=1,2,3,4}; // 保有 1,2,3,4,5 int a[MAX] = { //...
当定义二维数组a[M][N]时,数组名可以认为是二维指针,其指向二维数组的首地址。于是a的值就是首地址的值。而*a,就是a[0],a[0]是第一行的标记,代表第一行的首地址。在二维数组中,所有元素都是紧密排列的,这样整个数组的首地址,第一行的首地址,和第一个元素的首地址,即a,a[0],&a[0][0]都是相同...
1、本质区别 双引号里面的是字符串, 而单引号里面的代表字符。2、输出区别 str = “a”输出的就是a这个字母;str = ‘a’输出的测试65 3、底层区别 用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值。
有区别,举例说明: 在c语言中,数组 a[0]++; 又是什么意思? a[0]表示数组中的第一个值,可以把它看成一个变量x, a[0]++也就是数组中第一个值+1再存放到原位。 比如:int a[2]; 其中a[0]=1; a[1]=5; a[0]++以后,a[0]的值变为2。
探索后发现,`a`表示数组`a`的起始地址,而`&a`表示整个数组`a`的地址。注意`&a`结果与`a`结果相同,这表明在C语言中,数组名实际上是一个指向数组首元素的指针。理解这一点有助于深入掌握数组与指针之间的关系。关注微信公众号-嵌入式Linux,获取更多技术知识。分享有价值内容,请转发,点赞,您...
(*a)[1]就是 第0行数组的第1个元素 a[0][1]-->2 a[1]->通过运算符优先级看,是先运算 a[1],也就是第1行的数组名,一位数组名是第0个元素的首地址,a[1]就是第1行元素a[1][0]的地址,*求间接运输,那么*a[1]就是 a[1][0]的值-->41 ...
简单的说,a是数组首元素的地址,即a 等于 &a[0]&a是整个数组的首地址。这两个值相同,但代表了不同的意思。如:a+1,偏移的是一个数组元素的大小,而&a+1,偏移的是整个数组的大小