问一下, #define N ((void*)1)这个该如何理解呢

小王子_上海 2011-04-16 01:41:52
问一下, #define N ((void*)1)这个该如何理解呢
...全文
502 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lactoferrin 2011-04-17
  • 打赏
  • 举报
回复
一般是和指针一起用

比如windows中0-65535地址是不能用的,就把它当做其他的来用,CreateWindowExW中的ClassName是一个wchar_t*
也可以传入一个代表窗口类的ATOM,因为ATOM是16位的,小于65536,因此程序可以区分它们
碎碎念 2011-04-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 carlos_lee 的回复:]
#define N ((void*)1) 和#define N 1是不是有很大的区别呢

[/Quote]

区别就是类型不同,那两个N的值都是1,但是前者类型是void指针,后者是个int...所以使用的时候会有区别
AnYidan 2011-04-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 carlos_lee 的回复:]
引用 3 楼 hqin6 的回复:

其实这个很容易理解,比如对NULL指针的定义:
(void*)0
在做比较的时候,指针和数字比较,需要将数字进行转换一下

这个0000001就是另一个NULL而已引用 1 楼 pathuang68 的回复:

(void*)1是一个指针,指向的地址是0x00000001。N就是这个指针。

这样也太危险了吧。



那N所表示的就……
[/Quote]

表示地址为1 的内存单元,因此才是危险的,因为你不知到有无权限去用它,而地址 0 是定义好的,认为它指向 NULL
愤怒的熊猫007 2011-04-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hqin6 的回复:]

其实这个很容易理解,比如对NULL指针的定义:
(void*)0
在做比较的时候,指针和数字比较,需要将数字进行转换一下

这个0000001就是另一个NULL而已引用 1 楼 pathuang68 的回复:

(void*)1是一个指针,指向的地址是0x00000001。N就是这个指针。

这样也太危险了吧。
[/Quote]学习了~
太乙 2011-04-16
  • 打赏
  • 举报
回复
几乎没区别,只是为了瞒过编译器……[Quote=引用 7 楼 carlos_lee 的回复:]

引用 6 楼 hqin6 的回复:

这一般不会使用*N去取内存地址的值的,一般都是作为一个特殊的标记值,比如NULL表示指针指向的地址为空一样,你也可以说,指针指向为0x01这个地址的指针是空指针!
引用 5 楼 carlos_lee 的回复:

引用 3 楼 hqin6 的回复:

其实这个很容易理解,比如对NULL指针的定义:
(void*)0
在做比较的时候,指针和数字……
[/Quote]
谭海燕 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 carlos_lee 的回复:]
引用 6 楼 hqin6 的回复:

这一般不会使用*N去取内存地址的值的,一般都是作为一个特殊的标记值,比如NULL表示指针指向的地址为空一样,你也可以说,指针指向为0x01这个地址的指针是空指针!
引用 5 楼 carlos_lee 的回复:

引用 3 楼 hqin6 的回复:

其实这个很容易理解,比如对NULL指针的定义:
(void*)0
在做比较的时候,指针和数字比……
[/Quote]


区别相当大。一个是指针,一个是一个常量。
小王子_上海 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hqin6 的回复:]

这一般不会使用*N去取内存地址的值的,一般都是作为一个特殊的标记值,比如NULL表示指针指向的地址为空一样,你也可以说,指针指向为0x01这个地址的指针是空指针!
引用 5 楼 carlos_lee 的回复:

引用 3 楼 hqin6 的回复:

其实这个很容易理解,比如对NULL指针的定义:
(void*)0
在做比较的时候,指针和数字比较,需要将数字进行转换一下

这个0……
[/Quote]


#define N ((void*)1) 和#define N 1是不是有很大的区别呢
太乙 2011-04-16
  • 打赏
  • 举报
回复
这一般不会使用*N去取内存地址的值的,一般都是作为一个特殊的标记值,比如NULL表示指针指向的地址为空一样,你也可以说,指针指向为0x01这个地址的指针是空指针!
[Quote=引用 5 楼 carlos_lee 的回复:]

引用 3 楼 hqin6 的回复:

其实这个很容易理解,比如对NULL指针的定义:
(void*)0
在做比较的时候,指针和数字比较,需要将数字进行转换一下

这个0000001就是另一个NULL而已引用 1 楼 pathuang68 的回复:

(void*)1是一个指针,指向的地址是0x00000001。N就是这个指针。

这样也太危险了吧。



那N所表示的……
[/Quote]
小王子_上海 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hqin6 的回复:]

其实这个很容易理解,比如对NULL指针的定义:
(void*)0
在做比较的时候,指针和数字比较,需要将数字进行转换一下

这个0000001就是另一个NULL而已引用 1 楼 pathuang68 的回复:

(void*)1是一个指针,指向的地址是0x00000001。N就是这个指针。

这样也太危险了吧。
[/Quote]


那N所表示的就是1在内存中的地址吗
DANGSUOGUI 2011-04-16
  • 打赏
  • 举报
回复
加油,审理再亲南方
太乙 2011-04-16
  • 打赏
  • 举报
回复
其实这个很容易理解,比如对NULL指针的定义:
(void*)0
在做比较的时候,指针和数字比较,需要将数字进行转换一下

这个0000001就是另一个NULL而已[Quote=引用 1 楼 pathuang68 的回复:]

(void*)1是一个指针,指向的地址是0x00000001。N就是这个指针。

这样也太危险了吧。
[/Quote]
小王子_上海 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 pathuang68 的回复:]

(void*)1是一个指针,指向的地址是0x00000001。N就是这个指针。

这样也太危险了吧。
[/Quote]

我不懂啊,看到别人是这么用的
pathuang68 2011-04-16
  • 打赏
  • 举报
回复
(void*)1是一个指针,指向的地址是0x00000001。N就是这个指针。

这样也太危险了吧。

70,025

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧