c 语言基础:字符数组、字符串数组的定义、初始化和关系

前言

因为本人前期自学过python,java的基础,所以现在学 c 经常把字符串数组的用法搞混乱,所以现在回来重新温习下这个知识点,也是防止以后再次搞混乱后能方便查阅(尴尬…),故写了这篇博文,文章内容随意书写,所涉及的知识点仅供参考!!

字符数组
  • 定义的几种常见方式
//字符数组
 char c[] = {'a', 'b', 'c'};                     
 char ch[4] = {'s','a', 'b', 'c'};
 char ch1[4] = {'s'};
 

其中平时常用的方式是char c[] = {'a', 'b', 'c'};这种方式没有指定数组大小,它会根据参数的个数自动扩展大小,是我们平常比较喜欢用的方式。

  • 引用及赋值
printf("c[1]的值为:%c\n",c[1]);//输出b
c[1] = 'd';
printf("c[1]的值为:%c\n",c[1]);//输出d

引用:通过数组名加下标的方式:数组名[下标] printf("c[1]的值为:%c\n",c[1]); 赋值的话除了定义的时候可以直接把多个值进行赋值,例如:char c[] = {'a', 'b', 'c'};否则其他时候只能通过数组名[下标] = ‘字符’这种方式单个一 一赋值,当然,如果这个值已经存在,则会覆盖掉原来的值,以最新赋值为准,就像上面代码的c[1] = 'd',d会把原先存于c[1]中的 b 覆盖掉,以后对c [1]进行取值,得到的结果只会是d。

字符串数组
  • 定义
 char c1[] = {'p', 'a', 'b', 'c', '\0'};         //一维字符串数组
 char str[] = "string";                          //一维字符串数组
 char str1[] = {"string"};                       //一维字符串数组
 char str2[][4] = {"abc", "efg", "hij", "klmn"}; //二维字符串数组

字符数组加上一个‘\0’后就变成了字符串数组,c1 等同于 这种写法:char c1 = "pabc;原因在于字符串它是以\0结尾的,而我们只要以字符串的格式%s来打印字符数组,它会把这个字符数组打印出来,直到遇到\0才结束,故最终会打印出一串字符串。

  • 引用
	char c1[] = {'p', 'a', 'b', 'c', '\0'};         //一维字符数组
    char str[] = "string";                          //一维字符串数组
    char str1[] = {"string"};                       //一维字符串数组
    char str2[][4] = {"abc", "efg", "hij", "klmn"}; //二维字符串数组

    printf("c1 = %c\n", c1[3]); //输出c
    printf("str = %s\n", c1);   //输出pabc

    printf("str = %s\n", str);    //输出string
    printf("str = %c\n", str[0]); //输出 s

    printf("str1 = %c\n", str1[0]); //输出 s
    printf("str = %s\n", str1);     //输出string

    printf("str2 = %c\n", str2[1][1]); //输出f
    printf("str2 = %s\n", str2[1]);    //输出efg
    

通过以上代码的输出验证,我们不难发现,str 是 str 1的简写,两者含义是等同的,而char str2[][4] = {"abc", "efg", "hij", "klmn"};这种格式的字符串数组则是一种二维字符串数组的书写格式,二维字符串数组还是比较常用的,特别是在项目中,二维字符串数组几乎是必用的。故这在里罗列出来,通过字符串数组的四种格式对比,能较清楚的明白它们之间的区别,方便牢记!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值