指针、数组、字符串

来源:互联网 发布:淘宝推广招聘 编辑:程序博客网 时间:2024/06/05 18:59

在实际编程中,经常需要检查传入的字符串是否有效,因此经常有这样的代码

 

 

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这个地址