c语言中的星号“*”
新人啊看不明白前辈的代码不知道这几句的星号应该怎么解释#defineADC_A(*(structADC64_tag*)(0x000000+0x3048)ADC64_tag...
新人啊 看不明白前辈的代码 不知道这几句的星号应该怎么解释
#define ADC_A (*( struct ADC64_tag *) (0x000000 + 0x3048)
ADC64_tag是一个结构体变量
请详细说明两个星号的含义 展开
#define ADC_A (*( struct ADC64_tag *) (0x000000 + 0x3048)
ADC64_tag是一个结构体变量
请详细说明两个星号的含义 展开
6个回答
展开全部
#define ADC_A (*( struct
ADC64_tag *) (0x000000
0x3048)
楼主,是这样子的,首先将 0x000000 加上0x3048,结果用 ( struct
ADC64_tag *) 强制转化成一个指向struct adc_64结构的指针,如果不强制转化就把这个值当做指针,或者说地址,来访问的话,编译器是会报错的,然后第一个的*号表示访问这个地址!完毕。
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 访问地址空间存储的内容
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 定义语句
就说说我的理解
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.注释 /* 这里是注释 */
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.注释 /* 这里是注释 */
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询