Linux C\C++基础 字符数组、字符串和字符串常量
2024-09-04 06:05:33
1.字符数组和字符串
- C语言没有字符串类型,用字符数组模拟
- 字符串一定是字符数组,字符数组不一定是字符串
- 如果字符数组以字符'\0'('\0'等同与数字0)结尾,那么这个字符数组就是字符串
char a[]={'a','b','c'};//字符数组,不要指定大小,否则会添加0,变成字符串
char b[]={'a','b','c'.'\0'};//字符串
char c[]={'a','b','c',};//字符串
2.初始化
include<stdio.h> int main() { char a[]={'a','b','c'};
printf("a=%s\n",a);//打印,乱码,没有结束符
return ;
}
- 常用的初始化,使用字符串初始化,在字符串末尾自动加结束符数字0
- 这个结束符,用户看不到(隐藏)
- char a[10],最大写9个字符,留一个位置放结束符
- sizeof()测试数据类型的大小,不会因为结束符提前结束
char a[]="abc";
打印长度
3.字符串常量
- 每个字符串都是一个地址,这个地址是指字符串首元素地址
- 字符串常量放在data区,文字常量区
- 字符串常量,文字常量区的字符串,只能读,不能修改
#include<stdio.h>
void fun()
{
printf("fun s1=%p\n","hello world");
}
int main() {
//所有的hello world都代表一个地址,所以下面打印应该一样
printf("s1=%s\n","hello world");
printf("s1=%p\n","hello world");
printf("s1=%s\n","hello world"+);
fun();
//字符常量就是此字符串的首元素地址,所以可以赋值个指针
char *p="hello world";
printf("p=%p\n",p);
return ;
}
4.字符串常量初始化字符指针和字符数组的区别
char *p="hello";
char buf[]="hello";
- p指针保存le"hello"的地址
- 指针所指向的内存不能修改
- 把“hello"一个一个字符放在buf数组中
- 数组的元素可以修改
最新文章
- Best way to add Gradle support to IntelliJ Project
- Linux英文全称
- Unity依赖注入使用
- 如何让你的scrapy爬虫不再被ban之二(利用第三方平台crawlera做scrapy爬虫防屏蔽)
- 20145225 实验四《Andoid开发基础》
- 不借助jquery封装好的ajax,你能用js手写ajax框架吗
- HIbernate学习笔记(八) hibernate缓存机制
- Nine simple steps to enable X.509 certificates on WCF- 摘自网络
- android消息推送(Jpush)
- XML语法小结
- Linux 共享内存 详解
- nl命令
- RabbitMq相关
- extjs.net 按钮执行并显示Mask代码
- 暴雪《争霸艾泽拉斯》*采用自适应 SSAO
- openstack-- neutron 二/三层网络实现探究
- 实验5 IIC通讯与AD/接DA接口
- 织梦dedecms模板制作时,循环递增autoindex使用方法整理
- 命令方式启动安卓模拟器(M9)
- 关于Linq的对List<;实体>;去掉重复ID的一个小例子!