一、字符指针
1.char* pc=&ch
2.字符指针:四个字节
3.char* p = “abcdef” //把字符串首字母的地址赋值给了p,不是存整个字符串
char arr[] = “abcdef”//这个是将整个字符串给arr[]这个数组里
注意:const char* p = “abcdef” //加上const意味着char *p不能再被改动了,指针指向的字符串是常量
4.
p1 和 p2 都被const char*定义以后就意味着指针不能被修改,同时地址也不能被修改,也就是说p1和p2所指向的字符串首地址都是相同的,所以p1==p2
arr1和arr2首地址是不相同的两个,所以arr1和arr2不相同
总结:如果比较的是内容,那么arr1和arr2是相等的,但是现在比较的是字符串首字符的地址,这个是不相等的
小知识引入
二、指针数组 char* arr[] int* arr[]
重点是数组,是用来存放指针的数组
1. 各种数组形式
注意:数组名相当于首元素的地址
Eg: arr1[] = {1,2,3,4} //其中arr1相当于1的地址
2.指针数组
三、数组指针------>>指向数组的指针
1.理解指针数组和数组指针
2.数组名
难点一:
综上所述:
(1)arr[]是非法的
(2)arr输出的是首元素的地址
(3)如果只写{0}或者什么也不写{ }--->每一个元素都会初始化为0
难点二:
综上所述:
(1)&arr[0]--->取地址取的是数组元素首元素的地址
(2)&arr--->取地址取的是整个数组的地址
(3)arr--->没有取地址符号的时候也是数组元素首元素的地址
(4)数组指针就是用来存放数组的地址:int (*p2)[10] = &arr;
数组名通常表示的都是数组首元素的地址
但是有两个例外
1.sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小
2.&数组名,这里的数组名表示的依然是整个数组,所以&数组名取出的是整个数组的地址