笔记整理自哈尔滨工业大学的MOOC课程:C语言程序设计精髓
第九章 指针和数组
指针的算术运算
int *p=a;等价于int *p=&a[0];
指针加上一个整数
例如:p的基类型为整型,每个整型占据四个字节,即加上4*j个字节
指针减去一个整数
指针相减
指针的关系比较运算
小结
一维数组元素的引用
指向数组的指针
一维数组元素的访问
*(p++)是把指针的地址+1
(*p)++是把指针指向的数值+1
指针和一维数组做函数参数
小结
换个角度看二维数组
a[ i ][ j ]等价于*(*(a+i)+j)
指向二维数组的行指针
逐行查找—>逐列查找
再换一个角度看二维数组
按列指针访问二维数组元素
二维数组作函数参数
指向二维数组的行指针作函数参数
指向二维数组的列指针作函数参数
用const保护你传给函数的数据
小结
但是空白字符的存在,会浪费空间
解决办法:
char *country[] = {"America", "England", "Australia", "China", "Finland"};
这条语句定义了一个字符指针数组country,并用初始化列表中的每个字符串的首地址为字符指针数组country的元素进行初始化,并不是将初始化列表中的字符串保存到字符指针数组中。
指针数组与指向数组的指针
命令行参数
演示命令行参数与main函数形参之间的关系