指针自加自减运算
一维数组与指针
数组的所有元素都存放在一段连续的内存中,如果把数据的首地址赋给指针变量,就可以通过指针变量遍历整个数组。
一维数组与指针
当定义一个数组时,系统会在内存中为数组分配一段连续的内存空间,数组名就是这段内存空间的首地址。
将数组首地址赋给一个指针变量,这个指针就指向一个一维数组,通过这个指针变量就可以引用数组中的每个元素。
例如:
int *p, a[5];
p = a;
a是数组名,也是数组的首地址
p指向数组a
p等价于&a[0]
p+n就等价于&a[n]
注意
1. 引用数组的方法有两种:假设a为数组名,p指向a的首地址
(1)下标法:a[i]表示数组a的第i个元素
(2)指针法:*(a+i)或*(p+i)
2. p++合法,a++不合法,因为a是数组首地址,它是一个常量
3. *p++等价于*(p++),先执行*p的运算,再执行p++
二维数组与指针
二维数组与指针
&a[m][n] 表示元素a[m][n]的地址
&a[n]表示第n行的首地址
字符串与指针
字符串与指针
字符串的访问有两种方式:
(1)将字符串看作字符数组,通过数组下标操作字符串
(2)将字符串首地址看作字符指针,使用字符指针操作字符串
例:char *str = “hello”;
字符串数组
字符串数组是以字符串为元素的数组,可以将其看作是二维字符数组
char fruit[5][20] = {
“Apple”,
“Banana”,
“Orange”,
“Peach”,
“Strawberry”};
使用指针数组代替二维字符数组,减少内存的浪费,每个数组元素都是一个指针,指向一个字符串。定义形式为:
类型名 *数组名[数组长度];