1.字符指针
(1)在指针的类型中我们知道有一种指针类型为字符指针
char*
;

另外还有一种方法:
把字符串 hello world. 首字符的地址放到了pstr中

将字符串中首元素的地址(h的地址)传给指针 pstr,在用%s进行打印。
(2)

这里
str3
和
str4
指向的是一个同一个常量字符串。
C
会把常量字符串存储到单独的一个内存区域,当 几个指针。指向同一个字符串的时候,他们实际会指向同一块内存。但是用相同的常量字符串去初始化 不同的数组的时候就会开辟出不同的内存块。所以str1
和
str2
不同,
str3
和
str4
不同。
而str1和str2,开辟了两个不同的内存空,只是两个的内容相同,但所存储的地址是不同的。
2.指针数组 (即存放指针的数组,每一个元素都为一个指针)
3.数组指针 (数组指针是指针,指针数组是数组)
(2)&数组名和数组名
&arr
表示的是
数组的地址
,而不是数组首元素的地址。(细细体会一下)
本例中
&arr
的类型是:
int(*)[10]
,是一种数组指针类型
数组的地址
+1
,跳过整个数组的大小,所以
&arr+1
相对于
&arr
的差值是
40.
arr表示数组的首元素地址,当+1的时候,只跳过一个int类型的字节(4字节)。
(3)数组指针的使用 (既然数组指针指向的是数组,那数组指针中存放的应该是数组的地址)



4.
数组参数、指针参数
(1)
一维数组传参

(2)二位数组的传参

(3)
一级指针传参
当一个函数的参数部分为一级指针的时候,函数能接收什么参数?
(4)二级指针传参
当一个函数的参数部分为二级指针的时候,函数能接收什么参数?
5.函数指针
当对函数进行&时,&可以写也可以省略。而函数指针的参数中,必须要代表函数的类型,名称可以省略。
6.函数指针数组
当在编写代码的时候,需要调用多个相同的函数时候,且这些函数参数相同,参数个数相同,函数的返回值相同,就可以调用函数指针数组。
7.指向函数指针数组的指针