6 特殊的数组-字符串

1 字符串类型

要点1
字符串类型是通过制度指针来实现的,如char * p = " linux ",p中存放了字符串的第一个字符地址,这个地址就是字符串地址。
要点2
C语言中字符串使用的三个核心:
(1)用一个指针指向字符串头;
(2)字符串总是以‘\0’结尾,但字符串的实际内容不包括‘\0’;
(3)组成字符串的各字符的地址彼此连续。
要点3
指向字符串的字符变量空间和字符串存放的空间是分开的,如char * p = " linux “,p是一个字符指针变量,占4个字节用于存放字符串第一个字符的地址,可以是全局变量,也可以是局部变量;” linux "存储在代码段,占6个字节。
要点4
存储多个字符有两种方式,一是字符串,如char * p = " linux ";二是字符数组char a[ ] = " linux "。

2 字符串和字符数组

字符数组的初始化、sizeof、strlen

sizeof:是一个运算符,返回的是类型或者是变量所占用的字节数。
sizeof(数组名)得到的永远都是数组字节数,与有无初始化没有任何关系。
如char * p = " linux “.sizeof( p )计算得到的是4个字节,测试的是字符指针变量p本身的长度,和字符串的长度无关。
strlen:是C语言库函数,这个函数接收字符串的指针,返回值为字符串的长度(以字节为单位,不包含‘\0’)。
strlen用于计算字符串的长度,只传递合法的字符串地址才有效。
字符数组和字符串的本质差异
char a[ ] = " linux ",定义了一个数组a,数组a占6个字节,右值” linux “在编译器中,编译器将用它来初始化字符数组a后就丢弃,这些字符串的字符就被存放于数组中。
char * p = " linux ",定义了一个字符指针p,p占4个字节,分配在栈上,同时还定义了以个字符串” linux ",分配在代码段中,然后把代码段中的字符串的首地址(‘l’)赋值给p。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值