这里写目录标题
1.字符指针
字符指针是一个指向字符串的指针,它存储着一个字符地址,指向一个常量字符串,并且字符串不可修改。
以下是定义:
const char* ch="abcd";//"abcd"称为常量字符串
因为ch指针指向的字符串不能被修改,而且被修改了程序会奔溃,因此可以加上const
ch储存着常量字符串的首元素地址,也就是’a’的地址,"abcd"是常量字符串,不能被修改,被储存在只读数据区,当被引用时返回首字符地址。
这里我讲讲被常量字符串被调用返回的情况:
const char ch1 ="abcd";
const char ch2 ="abcd";
printf("%p\n",ch1);
printf("%p\n",ch2);
上面的结果是ch1和ch2的值是相同的,因为相同的常量字符串在只读数据区中储存的空间是相同的。
2.指针数组
指针数组是一个数组,只是用来存放指针的一个数组*
char* arr1[10];//存放一级字符指针的数组
int* arr1[10];//存放一级整形指针的数据
int** arr2[10];//存放二级整形指针的数据
3.数组指针
3.1 数组指针的定义
指针数组不是指针,只是一个存放指针的数组
而数组指针则是一个指向数组的指针
定义:
char arr1[10]; //指针数组
char (*arr2)[10];//数组指针
char *(*arr3)[10];//数组指针
’ [] ‘操作符的优先级比’ * ‘操作符的优先级高,所以arr1会先和’ [] '结合,形成数组,然后剩下的char就是数组存储数据的类型
arr2在括号的影响下先和’ * '结合,所以arr2代表的是一个数组指针,而剩下的char 变量名 [10] ;是代表指向数组的类型
同理:arr3也是一个数组指针,指向的是一个类型为char* [10] 的数组