这意味着我要定义一个指针,*未定义时,获取以下地址的内容,输入方法。
1.打开visualc++6.0-File-新建的copy-File-c++源文件,如下图所示:
2.输入预处理命令和主函数,如下图所示:
3.定义可变度量并确定行数,如下图所示:
4.确定空格数,如下图所示:
5.确定每行星号的数量,并将它们包装起来,如下图所示:
6.运行如下,以输出所需的星号:
#define ADC_A (*( struct
ADC64_tag *) (0x000000
0x3048)
楼主,是这样子的,首先将 0x000000 加上0x3048,结果用 ( struct
ADC64_tag *) 强制转化成一个指向struct adc_64结构的指针,如果不强制转化就把这个值当做指针,或者说地址,来访问的话,编译器是会报错的,然后第一个的*号表示访问这个地址!完毕。
楼上回答是正确的,举个例子:
char * test = NULL;
我们给test分配堆空间
test = (char *) malloc(5);
这里的char* 就是把分配的5个大小的空间引用为 char * 类型的
如果我们已经给test指向的空间赋值 比如赋值为“123”
这时我们通过 *test 访问地址空间存储的内容
是多了一个括号还是少掉一个括号?
就说说我的理解
struct adc64_tag * 这个是结构体指针变量 指向的初始为0x000000 + 0x3048 内存地址
define ADC_A 这个定义的是一个指针变量..指向的是struct ADC64_tag 的指针
这是一个二级指针类型的DEFINE 定义语句
*的用法
1.指针 ( struct ADC64_tag *) (0x000000 + 0x3048)强制类型转换
2.取指针的值 int a=3;int *p=&a;printf("%d",*p); printf中的 *p 就是取指针p指向的值
3.乘法运算符 3*4
4.字符'*' "3*4"
5.注释 /* 这里是注释 */