第五章预习
1.数组与指针变量
数组:数组名就是数组在内存存放的数组首元素地址。
指针变量:可以指向数组或数组元素。(数组和数组元素的使用同样可以使用指针变量。)
2.参数传递等价:
将数组作为参数传递给函数和将指向数组中第一个元素的指针传递给函数是完全等价的。
3.值传递和地址传递
值传递: void func(char a[MAX] );
地址传递: void func(char *a);
4.数组的下标
a[0]:数组第一个元素
a[1]:数组第二个元素
5.数组的大小:sizeof(a):数组所占字节数
sizeof(a)/sizeof(*a):数组元素长度
6. char *p:p是一个字符,符号“*”是指针运算符,也称间接引用运算符。
当程序间接引用一个指针时,实际上是引用指针所指向的数据。
7.指针所指向的类型:
int* *ptr;//把指针名字ptr和名字左边的指针声明符“*”去掉,剩下的int*就是指针所指向的类型。
把与指针搅在一起的“类型”,分成“指针的类型”和“指针所指向的类型”
8.指针的值:在32位程序里,所有类型的指针都是一个32位整数。
指针本身占的内存:4个字节(32位程序)
9.指针常量和常量指针
指针常量:char* const p=a;//指针本身是个常量,不可修改,但指针指向的内容可以修改
常量指针:const char *p;//指向的内容是常量,不可修改,但指针本身可以修改
10.指针传递的精华:
指针传递的是地址,形参的值不能改变实参的值,但形参所指向内容值的改变却能改变实参。