C语言中的字符串

索引

  我们知道,由于C语言相对来说是较低级的语言,它是没有提供字符串(string)类型的。但是它提供了两种使用字符串的方式。
  

方式一 字符数组

char str1[] = { 'h', 'e', 'l', 'l', 'o', '\0' };

方式二 字符串常量

char * str2 = "hello";

联系与区别

  这两种使用方式有什么联系与区别?
  联系:它们都是以字符数组的形式存储的。
  区别:
  1. 变量及值的类型
  str1的类型为”char [6]”,{ ‘h’, ‘e’, ‘l’, ‘l’, ‘o’, ‘\0’ }的类型也是”char [6]”;
  str2的类型为”char *”,”hello”的类型为“const char [6]”。
  2. 变量及值的存储位置[生命周期]
  假定str1与str2均为局部变量
  变量str1及其值在栈空间分配,超出其作用域后,均被释放;
  变量str2在栈空间分配,超出其作用域后,空间会被释放,但指向的值”hello”存储在只读数据段,程序结束时释放空间。

  可以看出,这两种方式最主要的区别,就是方式二是以常量的形式存储的。
  
  从区别中的第2点能清晰的看出,返回str1是不可以的,因为调用结束后,str1代表的内容已被释放;而返回str2是没有问题的,因为在调用结束后,它所指向空间的内容依然存在。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值