C学习笔记 10 字符串转换整数

char* p = "1234"; // '1'的ASCII为0x31
  int a = *( int* )p;
  printf( "0x%08x", a );
  结果为: _______________


0X34333231

我是这样弄出来的 char *p在内存里面的存储情况是把1234的ASCII马按顺序存储在内存中。

当把p付给a后 ,相当于a指向了p再内存中指向的位置。又因为a是整型,所以他的值占内存中由上到下4个字节的位置。而正好指针数组p的成员填满了那4个字节,因为a是int型,int型高位数存在内存的低地址处,所以4的ASCII码就是int的高位, 所以最后结果是34333231 
回复射洪五金 14:06:18
我把程序改成这样

 char *p = "12345678"; // '1'的ASCII为0x31
  int*  a = (int* )p;
  a++;
  printf( "0x%08x",*a );

得到的事5678的ASCII马 正好验证了这个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值