可以宏定义一个任意类型的指针吗
答案:2 悬赏:50 手机版
解决时间 2021-02-01 06:28
- 提问者网友:遮云壑
- 2021-02-01 00:53
可以宏定义一个任意类型的指针吗
最佳答案
- 五星知识达人网友:街头电车
- 2021-02-01 01:15
可以,举例说明:
#define MYPOINTER (unsigned char *)a
int a[5][10];
unsigned char *p;
int i,j;
for ( i=0;i<5;i++ ) for ( j=0;j<10;j++ ) a[i][j]=i*10+j; //给数组赋值
for ( i=0,p=MYPOINTER ;i<5*10*sizeof(int);i++,p++ ) *p=0; //用指针将数组清0
for ( i=0;i<5;i++,printf("\n") ) for ( j=0;j<10;j++ ) printf("%02d ",a[i][j]); //输出查看结果
运行结果是数组全部被清0
#define MYPOINTER (unsigned char *)a
int a[5][10];
unsigned char *p;
int i,j;
for ( i=0;i<5;i++ ) for ( j=0;j<10;j++ ) a[i][j]=i*10+j; //给数组赋值
for ( i=0,p=MYPOINTER ;i<5*10*sizeof(int);i++,p++ ) *p=0; //用指针将数组清0
for ( i=0;i<5;i++,printf("\n") ) for ( j=0;j<10;j++ ) printf("%02d ",a[i][j]); //输出查看结果
运行结果是数组全部被清0
全部回答
- 1楼网友:污到你湿
- 2021-02-01 01:51
请理解,宏定义就是在进行编译的同时,将使用此宏定义的代码位置全部进行替换后再编译。
如果只是定义了某个宏定义,而没有使用的位置的话,编译后生成的机器码或可执行文件是不包含与此宏定义相关的内容的。
举例1:
#define global
#define static static
#define const const
#define declare_a_pointer char* wccharpointer
以上几行写在文件头部编译没有问题,但是wccharpointer的指针变量是不存在的。
举例2:
#define global
#define static static
#define const const
#define declare_a_pointer char* wccharpointer
global declare_a_pointer = (char*)(0x04000000);
以上几行写在文件头部编译没有问题,而且之后的代码中可以对wccharpointer指针变量进行赋值了,此时才是真正定义了一个指针变量。
不知楼主是否理解了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯