【C语言】字符串(基础篇)


在进入正题之前,先上一波 思维导图,帮助你了解下面的知识体系。
在这里插入图片描述

字符串表示

概念

字符串:字符串是以空字符(’\0’)结尾的char数组。


创建

  1. 数组char name[] = "Elizabeth";
  2. 指针char *str = "Hello!";

看到这里,聪明的你也许会发现,既然有两种创建方式,那么它们之间有什么不同之处呢?


数组和指针创建的区别

  1. 相同点

    • 使用数组符号

          for (int i = 0; i < 10; i++)
                  printf("%c", name[i]);
      
          printf("");
      
          for (int i = 0; i < 6; i++)
                  printf("%c", str[i]);
      
    • 使用指针加法

      	for (int i = 0; i < 10; i++)
      		printf("%c", *(name+i));
      	
      	printf("");
      
      	for (int i = 0; i < 6; i++)
      		printf("%c", *(str+i));
      
  2. 不同点

只有指针可以使用自增运算符,WTF?难道数组名不是一个指针吗?

不急,先耐心的看一下,指针的自增运算符的使用:

while (*(str))	
		putchar(*str++);// 编译,运行正常

再来看一下,数组名能不能使用自增运算符

while (*name)
		putchar(*name++);// 编译报错,

结果:
在这里插入图片描述

从错误结果来看,难道说,数组名是一个常量

在《C和指针》这本书中“第八章 数组”中,作者从底层论述了:数组名是一个指针常量。


存储方式

字符串常量属于静态存

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值