数组的创建
type_t arr_name [const_n];
注意:
1.[]中要是一个常量
2.数组初始化时,[]不能为0。
int arr[0]; //error代码
3.数组创建的时候如果不想指定数组的确定大小就要初始化。数组的元素个数根据初始化的内容来确定。
char arr1="abc";
char arr2="abc";
if(arr1==arr2)
printf("hehe\n");//error代码
char *p1="abc";
char *p2="abc";
if(*p1==*p2)
printf("hehe\n");//√
数组的使用
总结:
1.数组是使用下标来访问的,下标从0开始。
2.数组的大小计算
int arr[10];
int sz=sizeof(arr)/sizeof(arr[0]);
数组的存储
数组在内存中是连续存放的。(一维、二维、多维数组)
指针
总结:
1.内存中的一个内存单元(字节)对应一个地址。
2.在32位平台上指针的大小是4个字节,64位平台是8个字节。
int num=10;
int *p=#; //将num的地址存放在p指针变量中
*p=20; //改变的是num这个变量的内容
一维数组的指针访问
arr[i]=*(arr+i)=*(i+arr)=i[arr]
注意:
1.数组的数组名就是数组首元素地址。
2.对数组名+整数的计算,其实可以获取到数组每个元素的地址。
3.&数组名就是整个数组的地址。+1是指向下一个数组的地址。
4.数组名代表整个数组的时候只有两种情况:
1>sizeof(数组名) 2>&数组名
数组作为函数参数
数组作为函数参数的时候,不会把整个数组都传递过去。实际上只是把数组的首元素的地址传递过去了。
void test(int arr[])
{
...
}这里的int arr[]表示依然是一个指针,相当于 int *arr
附:数组相关运算(重要)