C语言的字符、字符数组和指针之间的关系

本文介绍了C语言中字符、字符数组和指针之间的关系,详细阐述了不同定义方式下变量的含义和用法,包括字符变量、字符指针、字符数组以及二维字符数组。通过示例讲解了如何使用数组指针和指针数组实现字符串数组的排序。
摘要由CSDN通过智能技术生成

C语言的字符、字符数组和指针之间的关系

变量的定义

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",
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值