Linux C\C++基础 字符数组、字符串和字符串常量
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数组中
- 数组的元素可以修改

Linux C\C++基础 字符数组、字符串和字符串常量的更多相关文章
- java字符数组char[]和字符串String之间的转换
java字符数组char[]和字符串String之间的转换 觉得有用的话,欢迎一起讨论相互学习~Follow Me 使用String.valueOf()将字符数组转换成字符串 void (){ cha ...
- JPasswordField 中得到的字符数组转化为字符串(密码乱码问题)
转载自:http://blog.csdn.net/skl_tz/article/details/9009805 JPasswordField 用作密码的输入框,似乎很方便,但是,为了得到输入的内容,一 ...
- qt 字符数组如何转换字符串?
char 字符数组如何转换成 QString? char source{1024} = {0}; QString des = QString::fromLocal8Bit(source);
- C语言基础复习:字符,字符数组,字符串,字符指针
1. 概述2. 字符2.1 字符定义和大小2.2 字符的输入和输出2.3 字符的计算3. 字符数组3.1 字符数组的定义和大小3.2 字符数组的输入和输出3.3 字符数组的计算4. 字符串4.1 字符 ...
- C++基础之字符数组和字符串
无意中发现了一个非常有意思的技术类型小品文系列,通过大牛指导菜鸟的方式,解说讲C++知识,有的非常基础却是开发中easy忽略的地方. [Elminster的专栏] http://blog.csdn.n ...
- [c语言]字符数组、字符串定义
C语言中字符串通常用字符指针和字符数组来定义: char* pS="abcdef"; char s[]="abcdef"; 这两种方式都会在结尾为字符串隐式补结 ...
- 【C#】字符串与字符数组
字符串与字符数组的相互转换. 字符串转换成字符数组: string ss="abcdefg"; char[] cc=ss.ToCharArray(); 字符数组转换成字符串 ...
- c语言指针字符串与字符数组字符串的区别
#include <stdio.h> int main() { //字符串常量,存放于内存常量区. //常量区区的内存具有缓存机制, //当不同指针指向的常量值相同时, //其实这些指针指 ...
- c语言字符数组与字符串的使用详解
转自:http://www.jb51.net/article/37456.htm 1.字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素.char str[10]={ ...
随机推荐
- django之表多对多建立方式、form组件、钩子函数 08
目录 多对多三种创建方式 1.全自动(用ManyToManyField创建第三张表) 2.纯手写 3.半自动 form组件 引入 form组件的使用 forms组件渲染标签 form表单展示信息 fo ...
- Cannot use JSX unless the '--jsx' flag is provided.
在tsx文件中加入html代码后,报错 Cannot use JSX unless the '--jsx' flag is provided. 解决方法: 在tsconfig.json中加入: &qu ...
- C# dll文件添加引用失败
未能添加对“***/***.dll”的引用.请确保此文件可访问并且是一个有效的程序集或 COM 组件. 原因:dll文件使用其他语言生成,C#无法识别 解决方法: 添加using System.Run ...
- 【Winform-自定义控件】 DataGridView多维表头
[datagridview与treeview绑定] treeview 代码: DataTable dtable = new DataTable("Rock") ...
- Chef 组件
Chef是一家自动化公司.自2008年成立以来,我们一直在将开发人员和系统管理员与我们的同名产品Chef Infra联系在一起.多年来,我们所说的自动化已经扩展了.今天,Chef为基础设施和应用程序提 ...
- maven项目创7 配置分页插件
页面编写顺序 首先确定是否拥有想要的pojo(对象实体类)———>dao层mybatis配置——>service层的接口及实现类——>controller(web下) 分页插件作 ...
- Java多态性详解——父类引用子类对象
来源:http://blog.csdn.net/hikvision_java_gyh/article/details/8957456 面向对象编程有三个特征,即封装.继承和多态. 封装隐藏了类的内部实 ...
- HGOI 20191029am 题解
Promblem A 小G的字符串 给定$n,k$,构造一个长度为$n$,只能使用$k$种小写字母的字符串. 要求相邻字符不能相同且$k$种字母都要出现 输出字典序最小的字符串,无解输出$-1$. 对 ...
- Reborn & Recover
高考总算是结束了 而我们的旅程却还在继续 现在姑且是个ACMer(暂定) 而我已经将近一年没写代码了 接下来是全新的开始 全新的学校 全新的未来 总之从现在开始 试着努力看看吧!
- SQL语句中 NOT IN 子句的“正确打开方式”
在写SQL语句的时候,若where条件是判断用户不在某个集合当中,我们习惯使用 where 列名 not in (集合) 子句,这种写法本身没有问题,但实践过程中却发现很多人在写类似的SQL语句时,写 ...