C语言中什么时候需要手动添加'\0'

作者&投稿:宗圣巧 (若有异议请与网页底部的电邮联系)
c++:字符串什么时候需要手动加上’\0’呢?~

//正常情况不需要,比如你定义了一个字符串,编译器会默认在串尾加上'\0'
//如:
char* str = "hello"; //实际是 hello\0

//有一种情况需要手动加:在你以字符形式为字符数组赋值的时候
//,如果你后边要把它当串用就得手动加上结尾标记
//如:
char str[] = { 'h', 'e', 'l', 'l', 'o', '\0' };

//上边这个str如果不加'\0',当你把它当做串来访问时它的长度是未知的
//因为这要看内存里'o'后边到哪遇到'\0'

'
' ——换行,一般用于输出字符串时换行,不表示本字符串结束,只是对显示格式的调整。
'\0'——字符串零,详细点说就是字符串在字符数据之后加入一个null字符,表示字符串结束,一般不需要手动添加。

详细的可以看下面一段文字:
字符串结束符
C语言对字符串做了最奇怪的事:在每个字符串的末端加上了一个零。字符串末端的零有几种名字。下面列出了一些:

Null零
二进制零
字符串结束符
ASCII零
\0

警告:

你唯独不能把字符串末端的零叫做零(zero)。C程序员给字符串末端的零起了特殊的名字,这样你就知道在字符串末端用的既不是普通的数值零也不是字符'0'。只有null零出现在字符串末端。

C语言用字符串末端的零标识所有字符串的结束。当你输入文字My name is Julie时,不需要做什么特别的事情。C程序会自动加上null零。你永远看不到null零,但它确实存在。在内存中,只有当C程序遇到null零时才知道字符串结束了。

说明:

查看附录C时,你会找到ASCII表(在第2章中讨论)。第1个条目就是null,它的ASCII数是0。往下找到ASCII 48,会看到一个0。ASCII 48是字符'0',而第1个ASCII值是null零。C语言把null零放在字符串的末端。即使字符串"I am 20"也以ASCII 0结束,它就在20的字符0后面。
线索 字符串结束符有时被称为\0(反斜杠零),这是因为可以把\0放在单引号中来表示null零。因此,'0'是字符零,而'\0'是字符串结束符。
图6-1展示了字符串"Crazy"在内存中是如何存储的。如你所见,尽管字符串只有5个字母,但它占用了6个字节(一个字节是一个存储单元)。作为字符串"Crazy"的一部分,null零也占用了一个字节。

‘\0'是字符数组里的结束标志,库中的strcpy在复制完字符串时给你加上了'\0'结束符,所以不须要你再添加。而如果是你对字符数组操作时就要加,比如你把A串的字符复制给B,B[i++] = A[j++];复制完最后一个时你就要加上'\0'。B[i]=0;/B[i] = '\0';

调用strcpy函数的时候,也是一个一个字符的复制'\0' 也复制过去了
strcat 其实就是先找到参数一的最后字符,再把参数二的字符一个一个复制过去


SQL语句中什么时候需要用分号?
需要指出,即使用分号进行多语句隔离,系统仍然会报错,因为这样做又违反了access查询对象一次只能实施一条SQL语句的规定。建议一次查询只写一条追加查询语句。如确实需要一次执行多条查询,则可利用编程语言(例如vba) 来实现一次执行多条语句,但是请注意,语句与语句之间必须要用英文分号进行隔离。

C语言中的定义变量时,在什么条件下需要初始化?在什么条件下又不用初始...
作为输入变量时不用初始化。作为储存变量值时不用,(即为赋值语句左值)例:int a=2,b;b=a;

计算机c语言中的scanf函数什么情况需要&,什么时候不需要&
scanf 的意思是 你把输入的值给我送到地址 因此,如果你的参数已经是地址了,那么不需要 & 否则 需要用 &取一下地址

C语言中什么时候被调用函数要用return来得到返回值,什么时候不用return...
一般引用一个需要一个返回值的函数时那个函数通常就用return返回所需要的值,还有一种情况就是函数接收的参数是数组或某个指针(其本质都是地址),此时就是直接对主调函数中的数据进行操作,不需要返回值的

C语言中输出\/输入什么的时候需要调用头文件<stdlib.h>,请各位大侠帮帮 ...
申请和释放内存的时候。比如:malloc,free来申请和释放内存。stdlib.h里面定义了五种类型、一些宏和通用工具函数。 类型例如size_t、wchar_t、div_t、ldiv_t和lldiv_t; 宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX等等; 常用的函数如malloc()、calloc()、realloc()、free()、system...

c语言中什么时候函数调用时,被调用函数需要加return 返回
被调用函数 也就是子函数 申明时有返回类型就需要加return;如果是void function() void为无返回值,无需return 譬如 intfunction() int为整形,则需return一个整形值;

单片机c语言中什么时候必须要EnableInterrupt?
看来楼主没有理解透彻单片机运行程序的方式啊,我的理解是:单片机的程序分时间触发和事件触发两种,所谓的时间触发,就是你的死循环里面的,什么时候干什么,怎么干,先干啥后干啥,一清二楚,都是事先已经订好的;所谓的事件触发,就是有相应事件发生,并且允许事件触发事件时才会运行,比如说外部中断...

C语言中 什么时候用void 什么时候用int
在c语言中,有返回值的就用int,没有返回值就用void。在C语言中,凡不加返回值类型限定的函数,就会被编译器作为返回整型值处理。即不加返回值说明的函数为返回为int的函数。如果函数没有返回值,一定要声明为void类型。这既是程序良好可读性的需要,也是编程规范性的要求。另外,加上void类型声明后,...

c语言中使用if语句或else-if语句什么时候需要加{},什么时候不用?
if ---;if ---; 这个if与else一起 else ---;和 if ---; 这个if与else一起 { if ---;} 加了一个{},不然,它与else 一起了 else ---;

请问C语言中定义数据类型的有哪些词啊,应该在什么情况下用到?_百度...
当需要为变量、常量以及函数定义并分配存储空间时,要定义数据类型。C\/C++ 数据类型C语言包含5个基本数据类型: void, integer, float, double, 和 char.类型 描述 void 空类型 int 整型 float 浮点类型 double 双精度浮点类型 char 字符类型 C++ 定义了另外两个基本数据类型: bool 和 wchar_t.类型 ...

修水县18620195362: 字符串结束符什麽时候一定要手动添加 c语言 -
字彬海诺: 有一点你一定要记住,那就是永远都要保持字符串后面有结束标记!对,永远!至于什么时候要手动添加,这就要看你自己的处理了.如果你调用系统的一些函数,诸如strcpy(),strcat()这些函数,那就没有必要添加,因为他们自己会处理.但是如果你写一个循环来自己修改字符串的话,那就一定要想想是否应该添加结束标记,在哪儿添加结束标记.还是最开始的原则,你要保证字符串经过处理之后,后面一定有结束标记,即使是空字符串也不例外.

修水县18620195362: c语言中的&取地址是在什么时候要用,为什么要用? -
字彬海诺: 这个···不是吧.源码发上来,数组作为函数实参的时候,直接用数组名就行.不用取地址了.有哪里意见不一致,请提出交流.

修水县18620195362: c语言中,scanf里面要是数组要不要加&? -
字彬海诺: 你要弄明白原理就明白了.scanf传得必须是指针,也就是地址.比如int a;就需要&a;但是如果是数组,数组本身表示的是数组首元素的地址.也就是int a[10];a就表示a[0]的地址...

修水县18620195362: c++:字符串什么时候需要手动加上'\0'呢? -
字彬海诺: //正常情况不需要,比如你定义了一个字符串,编译器会默认在串尾加上'\0'//如:char* str = "hello"; //实际是 hello...

修水县18620195362: c语言中什么时候加scanf什么时候不用加? -
字彬海诺: &叫取地址符,如果你本身定义的是一个指针或一维数值的话,就不用加&,定义的是一个int,char等值的话就加&.(不完全是这样) 我想你可能是看到数组没加&才提的问吧!我也只是猜想,如果是的话等你学到指针与数组的关系你应该就明白了!

修水县18620195362: c语言中,对于字符什么时候应该加单引号,什么时候不该加 比如对于图片中第一题就搞不清楚 -
字彬海诺: 不需要加单引号啊,c语言中用单引号括起来的表示是一个字符.你看到\n加单引号是因为它多多数情况下是用在字符串中的,而字符串是用双引号括起来的,不需要在里面的每一个字符外加单引号.

修水县18620195362: C语言什么时候该加;什么时候不能加 -
字彬海诺: 可以归结为下面的三点: 1、一条语句,结尾加上分好';'. 2、用{}括起来的语句集,在'}'的后面不用加上';',但是语句集中的每条语句结尾加上分好';'. 3、一条语句,可以用多行编写,语句的结尾用';'表示.

修水县18620195362: 在C语言中什么语句后要加分号,什么语句后不用分号 -
字彬海诺: 不要的几种情况: 1.#include ··· 2.#define ··· 3.if(){``` 4.{ }后面 譬如:机构体struct st{··· ···;} 但是要注意 如:struct student{··· ···;}st;(这儿给student取了一个“小名”st,要加“;”)

修水县18620195362: C语言是怎么存储字符串的?末尾的\0需要自己手动输入吗? -
字彬海诺: c语言是用字符组数来存储字符串的..比如字符“hello” 你可以定义一个char a[6] ;也可以动态申请空间... 2. 末尾的\0是不用自己输入的,编译器会自动帮你加上..%s 是属于字符串的格式控制符...所以%后面的字母肯定是要讲究的...比如整数的格式控制串是%d, float 的是%f, double 的是 %lf 等...

修水县18620195362: C语言定义函数的时候为什么有时候加上&.比如: Status EnQueue(LinkQueue &Q, QElemType e){ ...} -
字彬海诺: 这是引用形参! 使用引用形参一般有两种情况,一时需要在程序中修改参数的值,而是参数内存较大,用以节省空间与时间的花销. 第一种:要想改变实参的值可以使用引用,因为引用类型的形参实际上就是实参的别名,当然能对实参进行操...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网