社区
C语言
帖子详情
问一下, #define N ((void*)1)这个该如何理解呢
小王子_上海
2011-04-16 01:41:52
问一下, #define N ((void*)1)这个该如何理解呢
...全文
502
13
打赏
收藏
问一下, #define N ((void*)1)这个该如何理解呢
问一下, #define N ((void*)1)这个该如何理解呢
复制链接
扫一扫
分享
转发到动态
举报
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就是这个指针。
这样也太危险了吧。
【C语言】宏定义:#
define
NUM (M+1)*M/2怎么运算的?
前些天朋友
问
我一个
问
题是关于宏定义的运算的,内容大致关于如下的宏定义的: #
define
N 2 #
define
M N+1 #
define
NUM (M+1)*M/2 Q:为什么NUM不是6呢?你看N=2,M=3,那么NUM不就是(3+1)*3/2嘛。小学一年级level的算术嘛。 那么我们来实际验证
一下
看看NUM到底是多少? 编译环境: Target: x86_64-linux-gnu GCC:gcc version 9.3.0 #include "stdio.h" #defin
5-5输入N个整数,用冒泡排序算法将它们按升序排序后输出。#include <stdio.h>#
define
N 10
void
sort (int *p, int n);int ma
5-5 输入N个整数,用冒泡排序算法将它们按升序排序后输出。 #include
#
define
N 10
void
sort (int *p, int n); int main(
void
) { int a[N],*pa ; int i; for( pa=a ;pa
C语言#
define
的用法,C语言宏定义
#
define
叫做宏定义命令,它也是C语言预处理命令的一种。所谓宏定义,就是用一个标识符来表示一个字符串,如果在后面的代码中出现了该标识符,那么就全部替换成指定的字符串。我们先通过一个例子来看
一下
#
define
的用法: #include <stdio.h> #
define
N 100 int main(){ int sum = 20 + N; printf("%d\n", sum); return 0; } 运行结果: 120 注意第 6 行代码int sum
#
define
用法集锦(非常全)
Definition:The #
define
Directive You can use the #
define
directive to give a meaningful name to a constant in your program. The two forms of the syntax are: Syntax #
define
identifier token-stringop...
C++中#
define
用法
#
define
是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但学生在学习时往往不能
理解
该命令的本质,总是在此处产生一些困惑,在编程时误用该命令,使得程序的运行与预期的目的不一致,或者在读别人写的程序时,把运行结果
理解
错误,这对C语言的学习很不利。 1 #
define
命令剖析 1.1 #
define
的概念 #
define
命令是C语言
C语言
70,025
社区成员
243,260
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章