- 宏定义
- 指针
- 结构体
1、宏定义
#define
每个参数加上括号,结果也加上括号
否则,可能会因为运算的优先级问题导致结果错误
#define ADD(a,b) ((a)+(b)) #define MUL(a,b) ((a)*(b)) void main() { //如果宏定义去掉括号运算结果就可能会出错 int add = ADD(1, 2) * ADD(3, 4); int mul = MUL(1 + 2, 3 + 4); printf("%dn", add); //21 printf("%dn", mul); //21 return 0; }
2、指针
内存:
内存是电脑上特别重要的存储器,计算机中所有的程序都是在内存中运行的;
为了有效的使用内存,把内存划分成为一个个小的内存单元,每个单元为1个字节;
为每个内存单元进行编号,这些编号称之为内存单元的地址。
每个变量都会有其地址:
举例:
void main() { int i = 1; //int变量有4个字节,指针只存储首地址 int* p = &i; //p指针变量 = 指针数据;存储地址的变量 printf("%pn", p); printf("%pn", &i); *p = 20; printf("%dn", i); //2 //指针变量大小都为4个字节(在32位平台中) printf("%dn", sizeof(int*)); printf("%dn", sizeof(float*)); printf("%dn", sizeof(char*)); printf("%dn", sizeof(long*)); printf("%dn", sizeof(short*)); printf("%dn", sizeof(double*)); return 0; }
指针大小:
32位平台为4字节
64位平台为8字节
3、结构体
C语言的类型除了前面提到的基本数据类型外,还有结构体;
结构体是的C语言有能力描述复杂类型
举例:
struct Student //定义了一个学生结构体 { char name[10]; int age; }; void main() { //第一种方式 struct Student stu1 = { "hello", 20 }; printf("name = %s, age = %dn", stu1.name, stu1.age); //第二种方式 struct Student stu2; stu2.age = 21; strcpy(stu2.name, "world"); printf("name = %s, age = %dn", stu2.name, stu2.age); return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)