在c语言中经常看到以下类似的代码:

int x = 1;

(char*)&x;

这样的形式的代码,这个里面就涉及一个类型转换的问题。

以下是在VC6.0中调试的结果

代码:

int main(int argc, char* agrv[])

{

int num = 1;

printf("&num=%p \n", &num);

printf("&num+1=%p \n", &num+1);

printf("(char*)&num=%p \n", &num);

printf("(char*)&num+1=%p \n", (char*)&num+1);

return 0;

}输出:

(注意:输出为内存地址,不同的机器有可能值不一样)

有些人可能会对printf("(char*)&num+1=%p \n", (char*)&num+1);输出的结果感到不可理解。

分析:

1,指针算术的规则:当对指针p进行加上一个整数i的操作时,实际上的到的一个地址。

这个地址的大小=(此时p所在的地址)+(p指向的数据类型的字节数*i)。

2,最开始num所在的地址上是一个32位数据(num声明为int型),在用(char*)对num所在的地址进行强制转换的时候,将num所在的地址上存储的数据由32位改变为8位,此时num所在地址的数据类型为char型。

所以在对(char*)&num+1的时候,就只是增加了一个字节的大小。

一般应用:

判断机器的字节顺序(环境win7 32位,vc6.0)

int main(int argc, char* agrv[])

{

int x = 1;

if( *(char*)&x == 1 )

{

printf("little\n");

}

else

{

printf("big\n");

}

return 0;

}

输出:little

c语言指针的强制类型转换,c语言指针的强制转换相关推荐

  1. 函数指针的强制类型转换与void指针

    前两天在移植一个DVB芯片的驱动库时,遇到一个情况: 驱动库的作者为了使DVB芯片兼容尽可能多的tuner芯片,在定义tuner_init函数指针时,参数中的handle定义为(void* handl ...

  2. C语言里 指针变量强制类型转换,C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)...

    强制类型转换形式:(类型说明符) (表达式) 举例说明:1) int a; a = (int)1.9; 2)char *b; int *p; p = (int *) b; //将b的值强制转换为指向整 ...

  3. C语言隐式/显式类型转换 | C++四种强制类型转换、类的隐式转换、explicit

    文章目录 C语言类型转换 隐式类型转换 显式类型转换 C++ 强制类型转换 static_cast reinterpret_cast const_cast dynamic_cast 类的隐式类型转换 ...

  4. c语言字符串强制类型转换,C语言学习九 —头文件强制类型转换错误处理

    预处理器 C 预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤.简言之,C 预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理.我们将把 C 预处理器( ...

  5. [强制类型转换]C语言中的强制类型转换相关

       问题描述:C语言中的强制类型转换许多时候是隐式的,而在未注意时很可能代码会进行隐式转换而造成运行结果不正确.因此打算对C语言的类型转换做下整理和学习,发现这篇文章总结的很好,于是转载下来,原文地 ...

  6. c语言数组变量的类型转换,C语言强制类型转换

    概要: C语言中,任何一个变量都必须占有一个地址,而这个地址空间内的0-1代码就是这个变量的值.不同的数据类型占有的空间大小不一,但是他们都必须有个地址,而这个地址就是硬件访问的依据,而名字只是提供给 ...

  7. c语言强制转换为结构体,C语言结构体的强制类型转换

    陈浩师兄03年的一篇博客<用C写有面向对象特色的程序>描述了用C语言来实现相似C++类继承的方法,这样方法的核心要点就是结构体的强制类型转换,让我来简单分析分析C语言中的结构体强制类型转换 ...

  8. c语言学习--强制类型转换

    C语言中关于强制类型转换问题 由于朋友问到,所以整理了一份,若关于一些认识有错误还望指出...... ● 如果一个运算符两边的运算数类型不同,先要将其转换为相同的类型,即较低类型转换为较高类型,然后再 ...

  9. C语言乘于强制转换哪个优先级高,C语言中关于强制类型转换问题

    因为朋友问到,因此整理了一份,若关于一些认识有错误还望指出......算法 ● 若是一个运算符两边的运算数类型不一样,先要将其转换为相同的类型,即较低类型转换为较高类型,而后再参加运算,转换规则以下图 ...

最新文章

  1. 南大硕士毕业生举报同组同学抄袭,被举报者回应了
  2. NB-IOT来了,物联网时代才真正来临
  3. 需要支持多种操作的线段树该如何确定运算顺序?
  4. linux 查看cpu_作为高级Java,你应该了解的Linux知识
  5. Golang 返回errorString,而不是errorString的原因
  6. android程序连接网络出现android.os.NetworkOnMainThreadEx
  7. 19-20年月度行业分析
  8. SPSS入门教程—问卷的信度量化分析
  9. 0基础学RS(十三)思科交换机上的Access模式和trunk模式以及配置
  10. #一份怀念# 致亲爱的旺旺狗狗
  11. 权威认可 | 悬镜云鲨RASP荣获信通院“2021金融行业年度卓越创新案例”
  12. 字符串相乘——大整数乘法
  13. 学堂在线-清华大学-操作系统实验Lab1【练习5-6】
  14. 让人头疼的哈夫曼树与编码
  15. 基于HTML+CSS+JavaScript仿瓜子二手车官网【学生网页设计作业源码】
  16. 台式电脑计算机风机,笔记本冷却风扇与台式计算机CPU风扇的质量,类型和区别...
  17. 运维实操——zabbix监控结合睿象云报警平台及API调用
  18. idea修改批量替换快捷键_idea当配置eclipse快捷键时,全局替换的快捷键是什么?...
  19. Python编程题——根据是否为会员以及购物的金额进行打折
  20. 百家讲坛 明太祖朱元璋

热门文章

  1. C# excel导入数据库(一)
  2. ITU-T G.781标准解读(二)
  3. 数据和安全①加解密理论概述
  4. 内网渗透笔记——msf
  5. Unity 之 UGUI TextMeshPro控件详解
  6. 荣耀v40和小米10哪个好 小米10和荣耀v40的区别
  7. java 复制一个excel,将列从一个excel复制到另一个excel
  8. Untiy播放带通道视频(AE导出)
  9. 学校计算机怎么控制其他电脑,如何控制多台电脑的?
  10. JVM内存结构之堆的垃圾回收过程