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++基础 字符数组、字符串和字符串常量的更多相关文章

  1. java字符数组char[]和字符串String之间的转换

    java字符数组char[]和字符串String之间的转换 觉得有用的话,欢迎一起讨论相互学习~Follow Me 使用String.valueOf()将字符数组转换成字符串 void (){ cha ...

  2. JPasswordField 中得到的字符数组转化为字符串(密码乱码问题)

    转载自:http://blog.csdn.net/skl_tz/article/details/9009805 JPasswordField 用作密码的输入框,似乎很方便,但是,为了得到输入的内容,一 ...

  3. qt 字符数组如何转换字符串?

    char 字符数组如何转换成 QString? char source{1024} = {0}; QString des = QString::fromLocal8Bit(source);

  4. C语言基础复习:字符,字符数组,字符串,字符指针

    1. 概述2. 字符2.1 字符定义和大小2.2 字符的输入和输出2.3 字符的计算3. 字符数组3.1 字符数组的定义和大小3.2 字符数组的输入和输出3.3 字符数组的计算4. 字符串4.1 字符 ...

  5. C++基础之字符数组和字符串

    无意中发现了一个非常有意思的技术类型小品文系列,通过大牛指导菜鸟的方式,解说讲C++知识,有的非常基础却是开发中easy忽略的地方. [Elminster的专栏] http://blog.csdn.n ...

  6. [c语言]字符数组、字符串定义

    C语言中字符串通常用字符指针和字符数组来定义: char* pS="abcdef"; char s[]="abcdef"; 这两种方式都会在结尾为字符串隐式补结 ...

  7. 【C#】字符串与字符数组

    字符串与字符数组的相互转换. 字符串转换成字符数组: string ss="abcdefg"; char[] cc=ss.ToCharArray();     字符数组转换成字符串 ...

  8. c语言指针字符串与字符数组字符串的区别

    #include <stdio.h> int main() { //字符串常量,存放于内存常量区. //常量区区的内存具有缓存机制, //当不同指针指向的常量值相同时, //其实这些指针指 ...

  9. c语言字符数组与字符串的使用详解

    转自:http://www.jb51.net/article/37456.htm 1.字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素.char str[10]={ ...

随机推荐

  1. Hadoop-No.3之序列化存储格式

    序列化存储指的是将数据结构转化为字节流的过程,一般用于数据存储或者网络传输.与之相反, 反序列化是将字节流转化为数据结果的过程.序列化是分布处理系统(比如Hadoop)的核心,原因在于他能对数据进行转 ...

  2. 【原】spring+mybatis下sqlSession.delete和insert返回值-2147482646问题

    这是由于spring-beans.xml中的batch批处理配置所导致的,注释掉BATCH配置的代码就可以返回1了: <bean id="sqlSessionFactory" ...

  3. ansible变量定义

    一./etc/ansible/hosts [webServers] 192.168.2.200 http_port=8009 [web]web1web2 [db]db1db2 [app:childre ...

  4. [人物存档]【AI少女】【捏脸数据】魔幻世界

    人物+衣物.zip

  5. LibreOffice/Calc:在表格中始终显示某列/某行

    本文适用于LibreOffice Calc 5.1.6.2 + Ubuntu 16.04,熊猫帮帮主@cnblogs 2018/3/5 编写表格时,我们常常使用表格最左侧的一列和最上方的一行作为序号列 ...

  6. BFS解决九宫重排问题

    问题 1426: [蓝桥杯][历届试题]九宫重排 时间限制: 1Sec 内存限制: 128MB 提交: 215 解决: 47 题目描述 如下面第一个图的九宫格中,放着  1~8  的数字卡片,还有一个 ...

  7. python中reversed()函数的用法

    reversed(a) # 返回一个反转的迭代器 举例 a = [1, 2, 3, 4, 5] b = reversed(a) # b是一个迭代器 # print(list(b)) = [5, 4, ...

  8. 【一起学源码-微服务】Nexflix Eureka 源码二:EurekaServer启动之配置文件加载以及面向接口的配置项读取

    前言 上篇文章已经介绍了 为何要读netflix eureka源码了,这里就不再概述,下面开始正式源码解读的内容. 如若转载 请标明来源:一枝花算不算浪漫 代码总览 还记得上文中,我们通过web.xm ...

  9. CodeForces 724C Ray Tracing(碰撞类,扩展gcd)

    又一次遇到了碰撞类的题目,还是扩展gcd和同余模方程.上次博客的链接在这:http://www.cnblogs.com/zzyDS/p/5874440.html. 现在干脆解同余模直接按照套路来吧,如 ...

  10. 面试准备一个访问一个URL的过程简版

    客户端获取URL - > DNS解析 - > TCP连接 - >发送HTTP请求 - >服务器处理请求 - >返回报文 - >浏览器解析渲染页面 - > TC ...