C语言当中结构句后面一个星号,是什么意思?
发布网友
发布时间:2022-05-15 16:33
我来回答
共5个回答
热心网友
时间:2023-09-28 16:50
1、定义一个指向结构变量的指针。
2、C语言中的结构体
格式:
struct 结构体标识名
{
类型名1 结构成员表1;
类型名2 结构成员表2;
„„
类型名n 结构成员表n;
};
注意:struct是关键字,是结构体类型的标志。“结构体标识名”和“结构体成员名”都是用户定义的标识符,“结构体标识名”是可选项,在说明中可以不出现。每个“结构成员表”中都可以含有多个同类型的成员名,它们之间用逗号隔开。结构体中的成员名可以和程序中的其他变量名相同,不同结构体中的成员也可以同名。要记住:结构体说明要以分号结尾。
3、结构指针
结构指针是指向结构的指针。它由一个加在结构变量名前的"*" 操作符来定 义, 例如用前面已说明的结构定义一个结构指针如下:
struct string{
char name[8];
char sex[2];
int age;
char addr[40];
}*student;
也可省略结构指针名只作结构说明, 然后再用下面的语句定义结构指针。
struct string *student;
热心网友
时间:2023-09-28 16:50
在C语言中使用*号有两种情况。
1、做乘法运算符使用。
在计算机中一般不使用数学的乘号×,而是用更容易打出的*替代。
如果*出现在运算中,且左右都有表达式,那么*就是当做乘号来使用的。
比如:
#include <stdio.h>
int main(){
printf("%d\n", 3*4);
return 0;
}
这个程序就是简单的计算3*4的输出,会输出12。
2、定义指针时做标识符。
在C语言中有指针的概念,在定义某个类型的指针时,会采用
TYPE *name;的形式。 具体说明在第三部分中一并叙述。
3、做取值运算符。
对某个指针变量做*操作,表示取该指针指向地址中的值。
在这种情况下*位于所要取值的指针变量前。如*p。
比如:
#include <stdio.h>
int main()
{
int a=3;
int *p = &a;//&为取地址 在这里的*是指针定义标识
printf("a = %d\n", a);//输出a的值,为3
printf("*p = %d\n", *p);//输出*p的值,这里的*是取值运算符。输出结果同样为3
return 0;
}
热心网友
时间:2023-09-28 16:51
1 费劲是为了结构化考虑,毕竟NVIC_Type里面有很多参数,不止一个不是?
如果都裸露出来,万一有一天要面对多个对象怎么办?
这样还有一个好处就是,只要知道结构体的名字就可以顺藤摸瓜找参数
2 (NVIC_Type *)是指定NVIC的类型,也就是NVIC在用的时候会被当作这个类型处理。
NVIC的值是NVIC_BASE = SCS_BASE + 0x0100
我们知道结构体变量的实质是一个指向其内存空间头部的指针,与结构体中的首元素内存地址相等,那ISER既然是首元素,他的地址自然是与NVIC一样啦,也就是:
SCS_BASE + 0x0100 = 0xe000e100
热心网友
时间:2023-09-28 16:52
IExample *
声明一个指向IExample类型的指针
热心网友
时间:2023-09-28 16:52
1、(NVIC_Type *) 应该是类型强制转换的意思,
把从NVIC_BASE这个地址开始的连续数据,转换成NVIC_Type的类型
2、使用 #define ISER (0xE000E100) 的原因:应该是 ISER 这个数据的值是不能改变的。
也就是C++中const的性质。
如果使用 ISER=0x85c0; 万一后面又有其他代码修改了 ISER 的值,编译器不会报错。
所以,使用#define 相当于降低了系统出错的风险。