c语言 字符串 本质,C-字符串的本质是什么?

#include

int main()

{

char a=(char)"321";

int i = (int)"321";

printf("a=0x%x; a=%cn", a, a);

printf("i=0x%xn", i);

}

直接看看反汇编代码即可:

; COMDAT ??_C@_03NNJHEBOA@321?$AA@

CONST SEGMENT

??_C@_03NNJHEBOA@321?$AA@ DB '321', 00H ; `string'

CONST ENDS

...

; 5 : char a=(char)"321";

mov eax, OFFSET ??_C@_03NNJHEBOA@321?$AA@

mov BYTE PTR _a$[ebp], al

; 6 : int i = (int)"321";

mov DWORD PTR _i$[ebp], OFFSET ??_C@_03NNJHEBOA@321?$AA@

首先i中存的是字符串常量"321"的地址,(char)"321";仅仅是将常量"321"的地址的第8位赋值给了a。

这个运行的结果与你字符串常量中的内容没有任何关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值