社区
C语言
帖子详情
请教C语言中 (char *)-1)什么意思啊
li32768
2009-04-02 03:56:07
在 C 语言编程中,遇到这种情况,请问这个是什么意思啊,
为什么 mem==(char *)-1) 而后面的字符指针又没有变量名,
我在网上搜索发现不能输入运算符,没有找到的,先谢谢了
...全文
1888
10
打赏
收藏
请教C语言中 (char *)-1)什么意思啊
在 C 语言编程中,遇到这种情况,请问这个是什么意思啊, 为什么 mem==(char *)-1) 而后面的字符指针又没有变量名, 我在网上搜索发现不能输入运算符,没有找到的,先谢谢了
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fianceeyi
2009-04-02
打赏
举报
回复
自学是王道。。。
li32768
2009-04-02
打赏
举报
回复
我自己来回答了
这是一种对常量内存地址表示方法,应用程序有时有这样的需求。这种写法的格式是: (地址类型)地址常量;
//其中常量地址可以用10进制或16进制书写
给举几个例子,比如在在32位系统中:
char* pCh = (char*)-1; // 则pCh为指向char类型的指针,其值为0xffffffff
int* pInt = (int*)2; // 则pInt为指向int类型的指针,其值为0x00000002
float* pFloat = (float*)0x00001a3e; 则pFloat为float类型指针,其指向的地址为0x00001a3e
对于标题中的代码,是这样解释的:
if(mapped_mem == (char *)-1)
{
// 如果映射内存地址(即mapped_mem)为0xffffffff 进行处理
}
else{
// 进行其他处理 }
我想我应该讲清楚了
Paradin
2009-04-02
打赏
举报
回复
[Quote=引用 6 楼 chenzongquan1973 的回复:]
一般用把-1转换成某种指针来表示错误的指针。if(mem==(char*)-1)一般同检查上一个语句中得到的mem指针是否出错了。
[/Quote]
d
li32768
2009-04-02
打赏
举报
回复
我来回答了:
<P>我自己来回答了:</P>
<P>这是一种对常量内存地址表示方法,应用程序有时有这样的需求。 <BR><BR>这种写法的格式是: (地址类型)地址常量;//其中常量地址可以用10进制或16进制书写 <BR><BR>给你举几个例子,比如在在32位系统中: <BR>char* pCh = (char*)-1; // 则pCh为指向char类型的指针,其值为0xffffffff <BR>int* pInt = (int*)2; // 则pInt为指向int类型的指针,其值为0x00000002 <BR>float* pFloat = (float*)0x00001a3e; // 则pFloat为float类型指针,其指向的地址为0x00001a3e <BR><BR>对于你的标题中的代码,是这样解释的: <BR>if(mapped_mem == (char *)-1){ // 如果映射内存地址(即mapped_mem)为0xffffffff <BR>// 进行处理 <BR><BR>}else{ <BR>// 进行其他处理 <BR><BR>} <BR><BR>我想我应该讲清楚了。</CA> </P>
Cpp权哥
2009-04-02
打赏
举报
回复
一般用把-1转换成某种指针来表示错误的指针。if(mem==(char*)-1)一般同检查上一个语句中得到的mem指针是否出错了。
armed
2009-04-02
打赏
举报
回复
使用(-1)作为指针的好处是:
读写空指针(也就是0地址)“有时”不会引起异常,而在(-1)地址执行读写肯定异常,100%有效。
breezes2008
2009-04-02
打赏
举报
回复
-1的16位二进制表示:1111 1111 1111 1111
此时mem指向0xFFFF这个地址。
影子LEON
2009-04-02
打赏
举报
回复
把-1这个值强制转换成地址。。。
猫已经找不回了
2009-04-02
打赏
举报
回复
mem==(char *)-1) 而后面的字符指针又没有变量名
指针-1吧
yyyapple
2009-04-02
打赏
举报
回复
可能表示 mem = 0xFFFFFFFF
C语言
程序+黄迪明.pdf
C语言
支持多种数据类型,包括整型(int)、字符型(
char
)、浮点型(float、double)、布尔型(通过宏定义实现)等。每种数据类型都有特定的存储大小和范围,例如,`int`通常占用4字节,范围为-2147483648到...
非C程序员C++入门自学
- **数据类型**:C++
中
的基本数据类型包括整型(int)、浮点型(float, double)、字符型(
char
)等,理解它们的用途和表示范围。 - **变量**:定义变量并了解其作用域,如局部变量和全局变量。 - **运算符**:...
C语言
同步训练全文/题库
1. **基本语法**:包括变量声明、数据类型(如int, float,
char
等)、运算符(算术、比较、逻辑、位操作等)、流程控制(if语句、switch语句、for循环、while循环、do...while循环)。 2. **函数**:理解函数的定义...
国二
C语言
各年代试题
1. 数据类型:包括整型(int)、字符型(
char
)、浮点型(float、double)等,理解它们的存储大小和表示范围至关重要。 2. 变量与常量:了解如何声明、赋值以及使用变量和常量。 3. 运算符:熟悉算术、关系、逻辑、...
二级
C语言
考试教程 二级
C语言
考试教程
在准备二级
C语言
考试的过程
中
,理解并掌握
C语言
的基础概念、语法结构以及编程技巧...在复习时,遇到不理解的概念或问题,及时查阅资料、
请教
他人,保持积极的学习态度,相信你一定能在二级
C语言
考试
中
取得理想的成绩。
C语言
70,026
社区成员
243,259
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章