在实际编程中,经常需要检查传入的字符串是否有效,因此经常有这样的代码
szNumber是一个字符串常量的指针,里面存放了实际字符串,如“abc”的首地址
szNumber == NULL检查传入的字符串指针是否有效
strlen(szNumber) == 0检查传入的字符串是不是空的(空表示字符串只有'/0'结束符)
可以用下面的代码检验
思考一下:什么是指针?
指针是一个特殊的变量,这个变量里存放的是一个地址。在32位机器上,地址就是32位的。地址就是内存单元的编号,可以想象成酒店的一个房间的房间号,房间号代表了实际的房间,日常生活里我们只会说我住在某某号房间,而不会在楼下指着我的房间说:看,这是我的房间。因此,房间号和房间是一回事.
上面代码里定义的b是一个字符型指针变量,b这个变量名被电脑理解为0x0012ff10,也就是说,对电脑来说,不存在什么b,只存在0x0012ff10这个地址,b只是c语言所做的标记。
好吧,b就是地址0x0012ff10,那我有这样的语句
int x = 0;
int y;
y = x;
这又是什么意思?
关键在于“=”号是什么意思?“=”之所以不称为等号,而称为赋值,就因为编译器有时候把变量名看成房间号,有时候又看成这个房间里住的人。这就是左值、右值的问题TODO我还没想清楚
b里存放了0x0041573c这个地址