c c array - yaokun123/php-wiki GitHub Wiki
数组名是常量,不能被赋值
int a[5] = {10,20,30,40,50};
a[0]:代表第0个元素
&a[0]:代表第0个元素的地址
a:数组名,代表数组,也代表第0个元素的地址
&a:整个数组的地址
注意:在数值上,&a[0]、a、&a相等
#include<stdio.h>
int main(){
int a[5] = {10,20,30,40,50};
printf("a[0] = %u\n",a[0]);
printf("&a[0] = %u\n",&a[0]);
printf("a = %u\n",a);
printf("&a = %u\n",&a);
return 0;
/*
a[0] = 10
&a[0] = 3970271184
a = 3970271184
&a = 3970271184
*/
}
a[0] + 1:代表数组第0个元素的值+1
&a[0] + 1:代表数组第0个元素的地址+1,跨过一个元素
a:代表数组第0个元素的地址+1,跨过一个元素
&a:整个数组的地址+1,跨过整个数组
#include<stdio.h>
int main(){
int a[5] = {10,20,30,40,50};
printf("a[0]+1 = %u\n",a[0]+1);
printf("&a[0]+1 = %u\n",&a[0]+1);
printf("a+1 = %u\n",a+1);
printf("&a+1 = %u\n",&a+1);
return 0;
/*
a[0]+1 = 11
&a[0]+1 = 3970271188
a+1 = 3970271188
&a+1 = 3970271204
*/
}
int a[2][3] = {{1,2,3},{4,5,6}};
a[0][0]:代表第0行第0个元素
&a[0][0]:代表第0行第0个元素的地址
a[0]:代表第0行,一维数组的数组名 a[0] = &a[0][0]
&a[0]:代表第0行的地址
a:二维数组的数组名,代表二维数组,也代表首行地址 a = &a[0]
&a:二维数组的地址
#include<stdio.h>
int main(){
int a[2][3] = {{1,2,3},{4,5,6}};
printf("a[0][0] = %u\n",a[0][0]);
printf("&a[0][0] = %u\n",&a[0][0]);
printf("a[0] = %u\n",a[0]);
printf("&a[0] = %u\n",&a[0]);
printf("a = %u\n",a);
printf("&a = %u\n",&a);
return 0;
/*
a[0][0] = 1
&a[0][0] = 3984353232
a[0] = 3984353232
&a[0] = 3984353232
a = 3984353232
&a = 3984353232
*/
}
a[0][0]+1:代表第0行第0个元素值+1
&a[0][0]+1:代表第0行第0个元素的地址+1,跨过1个元素
a[0]+1:跨过1个元素
&a[0]+1:代表第0行的地址+1,跨过1行
a+1:跨过1行
&a+1:二维数组的地址+1,跨过整个数组
#include<stdio.h>
int main(){
int a[2][3] = {{1,2,3},{4,5,6}};
printf("a[0][0]+1 = %u\n",a[0][0]+1);
printf("&a[0][0]+1 = %u\n",&a[0][0]+1);
printf("a[0]+1 = %u\n",a[0]+1);
printf("&a[0]+1 = %u\n",&a[0]+1);
printf("a+1 = %u\n",a+1);
printf("&a+1 = %u\n",&a+1);
return 0;
/*
a[0][0]+1 = 2
&a[0][0]+1 = 3984353236
a[0]+1 = 3984353236
&a[0]+1 = 3984353244
a+1 = 3984353244
&a+1 = 3984353256
*/
}