C语言提高-第23/24/25讲: 指针的运算/数组名作为函数参数/指针作函数参数(一维数组Vs指针)
知识点总结:
指针的运算:
指针直接操纵内存
两个指针相减,它们之间分隔几个单元;两指针变量相加没有意义
指向同一个数组的两个指针可以比较
定义p是指向函数的指针,正如数组名是指向数组首元素的地址,
函数名是该函数指向程序区所占用空间的起始地址
数组名作为函数参数:
用数组名作函数参数,此时实参与形参都用数组名
为形参分配空间,传递数组地址(共用同一段内存),而不是为其再建数组
故:
在函数中,参数为数组时,对形式参数数组值的改变,影响到实际参数数组的值
指针作函数参数:
冒泡排序函数的新写法:
形参中的arr[]并不是一个纯正的数组,否则arr+;是不被允许的:
一维数组 Vs 指针:
区别:
数组对应着一块内存区域,而指针是指向一块内存区域。
数组一旦定义好,数组地址a及数组容量不会改变,只有内容可以改变;
指针可以指向不同的内存区域,当指向常量字符串时(char *a="hello";),不能修改其内容
联系:
数组名即数组首元素的地址(固定),可以将数组名赋值给同类型的指针变量;
一维数组作为参数传递是以地址传递的,也就是一个指针,值可以被修改