字符串简单理解

一、字符串:

 1、C语言中字符串是以 /0 结尾的;

 2、C语言中没有字符串类型,用字符数组来模拟字符串;

 3、字符串分配内存 可以是 栈区、堆区、或者全局区;


二、字符数组的初始化:

 1、固定长度

       例如:char buf[4 ] = {'a','b','c','d'};     //结尾没有‘/0’   不是C风格

 2、不固定长度:

       例如:char buf[ ] =  {'a','b','c','d'};     //结尾没有‘/0’   不是C风格

 3、字面值对字符数组初始化:

       例如: char buf [ ] = "abcd";           //字符数组内自动补齐 ‘/0’


三、计算字符串 和 字符数组 长度的方法:

 1、计算字符串:用strlen();函数,包含头文件string.h;不将 ‘/0’ 计算在内;

 2、计算字符数组: 用sizeof()关键字,将字符数组末尾的‘/0’计算在内。


四、在使用字符串时候应注意的问题:

 1、初始化字符数组的时候 char buf [ ] = "abcd";的方式时,“abcd”是字面值,在内存中被分配在常量区,不可更改。

 2、字符数组 char buf[ ] = "abcd"; 中数组名buf是字符串的首元素地址,不可赋值更改。原因是编译器为确保栈区分配给字符数组buf的内存空间在释放时候得到完全释放。

 3、对字符串进行操作多引进指针变量,char* p = “abcd”;p所指向的是字符串”abcd”的首地址(就是指向a),p+1 则指向b,以此类推;这时候p可以改变,而*p不可改变。原因就是第1条,”abcd“在常量区,而p在栈区。












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值