存储属性
静态存储属性,栈(动态存储属性)
静态存储属性:变量在定义时候就分配好空间
栈变量:变量在使用时分配空间,使用后释放空间
判断标准:
静态存储属性变量:全局变量
局部变量,若有static修饰,则是静态存储属性;
若没有static修饰,则是栈变量
二维数组初始化
static int array[3][4] = {{1,2,3,4},{4,5,6,7},{3,4,6,9}};
也可以初始化部分值
static int array[3][4] = {{1},{3},{4}};
也可以对全部数组初始化,但不指定第一维的长度,而第二维的长度必须指定
static int array[][4] = {1,2,3,4,5,6,7,8};
int a[5]
a 数组名:数组的首元素的地址,即a[0]的地址
&a 数组的地址
*&a == a这两者是相等的
公式:
数组地址 = &数组首元素地址
数组首元素地址 = *数组地址
a &a 数值上大小是相等的,但含义不同
a+1 &a+1 这两个不等,a+1相当于加了一个元素,即为a[1]的地址,&a+1是加了一个数组
二维数组
int b[5][2] 看成是由5个一维数组组成的数组
数组名:数组首元素的地址
b:数组首元素地址,即表示第0个一个数组地址
b[0][0] **b这两者等价 *(*b+0) *b表示第0个一维数组地址
b[0][1] *(*(b+0)+1)
b[i][j] *(*(b+i)+j) (b+i)第i个数组首元素的地址,*(b+i)+j第i个数组的第j个元素的地址,*(*(b+i)+j)为b[i][j]
b != &b[0][0]
b == &&b[0][0]
*b == &b[0][0]
b[0] 相当于 int x[2]中的x,第0个一维数组中首元素地址即第0个元素的地址
b[0] == &b[0][0]
公式:
数组地址 == &数组名 = &数组首元素地址
数组首元素地址 == *数组地址
二维数组地址法:
int b[5][2]
可以看成是有5个一维数组组成的数组
数组名 b: 数组首元素地址
数组首元素 ----由两个int型变量组成的一维数组,即一维数组的地址
**b =*&b[0][0] = b[0][0]
*b = *&&b[0][0] *b表示一维数组中第0个元素的地址
*b+1 = &b[0][1]
*(*b+1) == b[0][1]
*(b+i)+j = &b[i][j]
静态存储属性,栈(动态存储属性)
静态存储属性:变量在定义时候就分配好空间
栈变量:变量在使用时分配空间,使用后释放空间
判断标准:
静态存储属性变量:全局变量
局部变量,若有static修饰,则是静态存储属性;
若没有static修饰,则是栈变量
二维数组初始化
static int array[3][4] = {{1,2,3,4},{4,5,6,7},{3,4,6,9}};
也可以初始化部分值
static int array[3][4] = {{1},{3},{4}};
也可以对全部数组初始化,但不指定第一维的长度,而第二维的长度必须指定
static int array[][4] = {1,2,3,4,5,6,7,8};
int a[5]
a 数组名:数组的首元素的地址,即a[0]的地址
&a 数组的地址
*&a == a这两者是相等的
公式:
数组地址 = &数组首元素地址
数组首元素地址 = *数组地址
a &a 数值上大小是相等的,但含义不同
a+1 &a+1 这两个不等,a+1相当于加了一个元素,即为a[1]的地址,&a+1是加了一个数组
二维数组
int b[5][2] 看成是由5个一维数组组成的数组
数组名:数组首元素的地址
b:数组首元素地址,即表示第0个一个数组地址
b[0][0] **b这两者等价 *(*b+0) *b表示第0个一维数组地址
b[0][1] *(*(b+0)+1)
b[i][j] *(*(b+i)+j) (b+i)第i个数组首元素的地址,*(b+i)+j第i个数组的第j个元素的地址,*(*(b+i)+j)为b[i][j]
b != &b[0][0]
b == &&b[0][0]
*b == &b[0][0]
b[0] 相当于 int x[2]中的x,第0个一维数组中首元素地址即第0个元素的地址
b[0] == &b[0][0]
公式:
数组地址 == &数组名 = &数组首元素地址
数组首元素地址 == *数组地址
二维数组地址法:
int b[5][2]
可以看成是有5个一维数组组成的数组
数组名 b: 数组首元素地址
数组首元素 ----由两个int型变量组成的一维数组,即一维数组的地址
**b =*&b[0][0] = b[0][0]
*b = *&&b[0][0] *b表示一维数组中第0个元素的地址
*b+1 = &b[0][1]
*(*b+1) == b[0][1]
*(b+i)+j = &b[i][j]
*(*(b+i)+j ) = b[i][j] = *(b[i]+j)