指针、数组、字符串

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

 

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值