指针、数组和结构体的一些思考
(1)数组名和指针的关系
1.数组名可以看作是常量指针。
2.一维数组名是一级指针。
3.二维数组名是二级指针。
4.二维数组名取[]后,得到一级指针。
例子:int a[3][5];
a是二级指针。
a[0]、a[1]、a[2]是一级指针,构成一级指针数组,a是他们的首址。
a即&a[0]、a+1即&a[1]、a+2即&a[2]
(2)如何在堆中申请二维数组。
typedef unsigned UID[8];//UID代表unsigned [8],是一种数组类型,可以定义数组。
UID uid;//uid是unsigned [8]类型数组的数组名,属于常量指针。
UID *pUid = NULL;//定义数组指针。数组指针本质是二级指针,所以可以用数组指针对应二维数组操作。
pUid = (UID*)malloc(6*8);//申请二维数组。
(3)数组和结构体赋值0
数组和结构体赋初值0,可以直接用={0};
当对其赋值0时,则需要用memset函数。