1.变量与指针
要明确变量是能读能写,存于内存的
而指针是保存地址,在32位处理器中,指针永远是占四个字节。无论其数据类型是什么
2.关键字
volatile:易变量,让编译器不优化掉其定义的数据。适用于在硬件寄存器中使用,让cpu时刻读取ram中某个变量的值。确保硬件电路有效。
const:用来定义某些不想被更改的常量
static:局部变量,让外部文件无法调用该变量。只能在本文件中使用。
extern:外部变量,可通过声明一个外部变量并且include对应文件中也要再次声明。
需要注意的是:extern是声明,不可进行定义如 extern int a =1 是错的。
3.结构体
最好使用typedef方便使用,另外要注意对齐,即结构体所占字节是看所定义类型所占字节最大值的倍数。
struct student{
char a;//1字节
char b;//1字节
int c;//4字节
}
struct student s1 ={'A','B',20} //占8字节,前四个字节中有两个被浪费。此时即为变量,占据了内存
typedef struct student{
char a;
char b;
int c;
}STU;
STU s1 ={'A','B',20}
4.指针赋值与使用
实际上指针赋值与变量赋值类似
int c; int *p; p = &c *p= 123
并且在进行指针赋值时要注意数据类型问题,特别是结构体还有可能造成其他数据丢失。
STU s1 ={'A','B',20}
int *p;
p = (int *)&s1.a; //此处注意要数据转换否则报错
*p = 'P'
printf("a = %crn", s1.a);
printf("b = %crn", s1.b);
还有一点值得注意
STU s1 ={'A','B',20}
STU s2 ={'1','2',10}
int *p;
struct int * pt;
pt = &s1; //pt是一个指针,因此对应的应该为地址,4字节对应4字节
*pt = s2; /
暑期编程PK赛
得CSDN机械键盘等精美礼品!


