打印
[产品应用]

字符串与字符数组详解知识点

[复制链接]
384|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jf101|  楼主 | 2024-9-14 14:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

对于字符串的引用和赋值:

char message1[] = {‘H’,'e','l','l','o',0};


这个方法当然可行,但除了非常短的字符串,这种方法确实很笨拙。因此,C语言标准提供了一种快速方法用于初始化字符数组:

char message2[] = "Hello";

尽管它看上去像一个字符串常量,实际上并不是,它只是前例的初始化列表的另一种写法。

如果它们看上去完全相同,那么如何分辨字符串常量和这种初始化列表快速**法呢?

划重点:当用于初始化一个字符数组时,它就是一个初始化列表,在其他任何地方,它都表示一个字符串常量;加引号的字符串常量可以理解为是该字符串常量的指针.

char *message3 ="Hello";


这个看起来跟上例很像,但它们具有不同的含义,前者初始化一个字符数组的元素,后者则是一个真正的字符串常量,这个指针被初始化为指向这个字符串常量的存储位置。



大家可以试试,上面message1、message2、message3 是否可以将第一字符改为小写?

message1[0]='h';

message2[0]='h';

message3[0]='h';


使用特权

评论回复
沙发
中国龙芯CDX| | 2024-9-19 08:02 | 只看该作者
字符串与字符数组其实是数组的使用

使用特权

评论回复
板凳
星辰大海不退缩| | 2024-9-20 10:19 | 只看该作者
数组和字符串的使用非常简单明了

使用特权

评论回复
地板
szt1993| | 2024-9-23 18:51 | 只看该作者
数组与字符串都是地址寻址的一种特殊形式

使用特权

评论回复
5
小夏天的大西瓜| | 2024-9-26 17:37 | 只看该作者
初始化一个字符数组时,它就是一个初始化列表

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

231

主题

1538

帖子

2

粉丝