变量的定义
char ch 表示定义一个字符类型变量
char* ch 表示定义一个指向字符类型的指针变量,其值为内存地址。可用于创建动态数组.
char ch[N] 表示定义一个存储N个字符类型的数组变量,其中ch[0]表示数组中的第一个元素,其值为char类型。ch则表示整个数组变量,它的值是整个数组在内存中的首地址 ,ch可以看成一个存储了N个char类型的数组的指针,此时ch并不表示char类型的指针,使用sizeof(ch)后得到整个字符数组的长度N。但是如果使用1.运算符对其进行解引用,ch将得到数组第一个元素ch[0]的值 2.将ch作为参数传递给被调函数时,ch可看作char类型的指针3.使用+ - 运算符对ch进行地址偏移运算时,ch可看作char类型的指针,(ch+1)等价于ch[1] 以上可看作数组指针的退化
char ch[M][N] 表示一个存储了M个 存储了N个char类型的数组 的数组,其表现形式为二维数组,实际仍然为一维数组。ch[0]的值是ch中存储的第一个字符数组的首地址。ch+1等价于ch[1],是ch中存储的第二个字符数组的首地址。使用puts(ch),可打印第一个动态数组。但是ch[0],表示对ch存储的第一个数组的首地址进行取值,将得到一个char类型,因此不可以使用puts()进行打印(会以char变量的值作为地址进行访问,导致访问冲突报错),应该使用printf("%c“,*ch[0])进行访问。
//需要注意和[]在定义变量时用于声明变量的类型,声明的变量时什么类型需要看、[]和变量名结合的顺序
char* ch[N] 表示存储N个指向char类型的指针的数组,ch[0]存储的是ch里面存储的第一个char的地址,由于char可用于分配动态数组,因此char ch[N]可用于存储N个字符数组。ch本质是一个一维数组。
char (* ch)[N]表示一个指向 存储了N个char类型的数组的指针,ch本质是一个指针。
例题
分别使用数组指针和指针数组来实现字符串数组的排序
1.定义变量
//定义一个二维数组,tg可作为数组指针
char tg[5][6] = {
"hell","hi","world","affqf",