C风格字符串结束符用作逻辑判断

本文探讨了C语言中数字0的多重角色,包括其作为数字量、字符串结束符、地址指针的最小值及逻辑假的表示方法。文章通过实例展示了如何正确使用0进行逻辑判断,并对比了不同场景下0的使用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C 语言中0有几个用途。它是一个数字量;在字符串中它是一个结束符(’\0’),它是地

址指针所允许的最小值;在逻辑表达式中它表示假,因为它有这么多的用途,你在编程时要清

楚地表明是哪种。

C++ Prime P113--115

#include <iostream>
#include <string>
using namespace std;
void main()
{

char *cp = "hel0lo";	// l与l之间有个数字0,但是它表示的是字符'0',而非数字本身.
	// 字符串末尾的结束符null 本身就是个数字0,而非字符'0'
	//  因为结束符null 是数字0,因此可以用于逻辑判断
	 

//	while ( *cp != NULL ) 
//	while(*cp !=0)
//	while(*cp!='\0')
	while(*cp)   // 这种写法最简单,必须理解.
	{		
		cout<<*cp<<endl;
		++cp;
	}   

	cout<<"------------------------"<<endl;

  	cout<<*cp<<endl;  // 输出为空 此时 cp指向空字符 '\0' ,什么也没有

    cout<<"------------------------"<<endl;

	string s = "hel0lo"; 
	string::size_type i =0;
	while(i!=s.size())
	{
		cout<<s[i]<<endl;
		++i;
	}


	while(!('\0')){  // '\0'  ----   它不是一个字符,它是数字0,因此可以用着逻辑判断
		cout<<"null terminal"<<endl;
		break;
	}


	cout<<'\0'<<endl;  // 输出为空 '\0' ,什么也没有
}



 

 

 

 下文转摘:

http://blog.youkuaiyun.com/chenliangming/article/details/3261149

 

17.1.7  C语言中与0比较的用法

C 语言中0有几个用途。它是一个数字量;在字符串中它是一个结束符(’\0’),它是地

址指针所允许的最小值;在逻辑表达式中它表示假,因为它有这么多的用途,你在编程时要清

楚地表明是哪种。

隐含地和逻律变量比较。正如前面提到,这样写逻辑表达式是正确的。

    while(!Done)

这个表达式隐含在和0 作比较是正确的,因为这个比较是在一个逻辑表达式里。

数与0 比较。虽然可隐含地把逻辑表达式与0 比较,你却不可以把数字表达式隐含地与0

比较。对于数字,编程:

   while(Balance!=0)…

而不可写成

     while(Balance)…

  把字符与结束符(’/0’)字一样,字符也不是逻辑表达式。因此对字符编程:

      while(* CharPtr!=’0’)…

而不能写成:

      while (* CharPtr) …

这种说法与常用的c 语言在处理字符数据时的习惯可能有出入,但它强化了这种观点,即

表达式是在处理字符数据,而非逻辑数据。C语言的有些用法并不是基于可读性和或维护而设计

的,比如上例即是。

把指针与Null(空指针)比较。对指针编程:

while(BufferPtr!=Null)…

而不写成:

   while(BufferPtr)…

与字符的情形一样,这也不是C 的常用用法,但却增强可读性。  

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值