c语言指针的强制类型转换,c语言指针的强制转换
在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语言指针的强制转换相关推荐
- 函数指针的强制类型转换与void指针
前两天在移植一个DVB芯片的驱动库时,遇到一个情况: 驱动库的作者为了使DVB芯片兼容尽可能多的tuner芯片,在定义tuner_init函数指针时,参数中的handle定义为(void* handl ...
- C语言里 指针变量强制类型转换,C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)...
强制类型转换形式:(类型说明符) (表达式) 举例说明:1) int a; a = (int)1.9; 2)char *b; int *p; p = (int *) b; //将b的值强制转换为指向整 ...
- C语言隐式/显式类型转换 | C++四种强制类型转换、类的隐式转换、explicit
文章目录 C语言类型转换 隐式类型转换 显式类型转换 C++ 强制类型转换 static_cast reinterpret_cast const_cast dynamic_cast 类的隐式类型转换 ...
- c语言字符串强制类型转换,C语言学习九 —头文件强制类型转换错误处理
预处理器 C 预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤.简言之,C 预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理.我们将把 C 预处理器( ...
- [强制类型转换]C语言中的强制类型转换相关
问题描述:C语言中的强制类型转换许多时候是隐式的,而在未注意时很可能代码会进行隐式转换而造成运行结果不正确.因此打算对C语言的类型转换做下整理和学习,发现这篇文章总结的很好,于是转载下来,原文地 ...
- c语言数组变量的类型转换,C语言强制类型转换
概要: C语言中,任何一个变量都必须占有一个地址,而这个地址空间内的0-1代码就是这个变量的值.不同的数据类型占有的空间大小不一,但是他们都必须有个地址,而这个地址就是硬件访问的依据,而名字只是提供给 ...
- c语言强制转换为结构体,C语言结构体的强制类型转换
陈浩师兄03年的一篇博客<用C写有面向对象特色的程序>描述了用C语言来实现相似C++类继承的方法,这样方法的核心要点就是结构体的强制类型转换,让我来简单分析分析C语言中的结构体强制类型转换 ...
- c语言学习--强制类型转换
C语言中关于强制类型转换问题 由于朋友问到,所以整理了一份,若关于一些认识有错误还望指出...... ● 如果一个运算符两边的运算数类型不同,先要将其转换为相同的类型,即较低类型转换为较高类型,然后再 ...
- C语言乘于强制转换哪个优先级高,C语言中关于强制类型转换问题
因为朋友问到,因此整理了一份,若关于一些认识有错误还望指出......算法 ● 若是一个运算符两边的运算数类型不一样,先要将其转换为相同的类型,即较低类型转换为较高类型,而后再参加运算,转换规则以下图 ...
最新文章
- 南大硕士毕业生举报同组同学抄袭,被举报者回应了
- NB-IOT来了,物联网时代才真正来临
- 需要支持多种操作的线段树该如何确定运算顺序?
- linux 查看cpu_作为高级Java,你应该了解的Linux知识
- Golang 返回errorString,而不是errorString的原因
- android程序连接网络出现android.os.NetworkOnMainThreadEx
- 19-20年月度行业分析
- SPSS入门教程—问卷的信度量化分析
- 0基础学RS(十三)思科交换机上的Access模式和trunk模式以及配置
- #一份怀念# 致亲爱的旺旺狗狗
- 权威认可 | 悬镜云鲨RASP荣获信通院“2021金融行业年度卓越创新案例”
- 字符串相乘——大整数乘法
- 学堂在线-清华大学-操作系统实验Lab1【练习5-6】
- 让人头疼的哈夫曼树与编码
- 基于HTML+CSS+JavaScript仿瓜子二手车官网【学生网页设计作业源码】
- 台式电脑计算机风机,笔记本冷却风扇与台式计算机CPU风扇的质量,类型和区别...
- 运维实操——zabbix监控结合睿象云报警平台及API调用
- idea修改批量替换快捷键_idea当配置eclipse快捷键时,全局替换的快捷键是什么?...
- Python编程题——根据是否为会员以及购物的金额进行打折
- 百家讲坛 明太祖朱元璋