- 宏定义
- 指针
- 结构体
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("%d\n", add); //21
printf("%d\n", mul); //21
return 0;
}
2、指针
内存:
内存是电脑上特别重要的存储器,计算机中所有的程序都是在内存中运行的;
为了有效的使用内存,把内存划分成为一个个小的内存单元,每个单元为1个字节;
为每个内存单元进行编号,这些编号称之为内存单元的地址。
每个变量都会有其地址:
举例:
void main()
{
int i = 1; //int变量有4个字节,指针只存储首地址
int* p = &i; //p指针变量 = 指针数据;存储地址的变量
printf("%p\n", p);
printf("%p\n", &i);
*p = 20;
printf("%d\n", i); //2
//指针变量大小都为4个字节(在32位平台中)
printf("%d\n", sizeof(int*));
printf("%d\n", sizeof(float*));
printf("%d\n", sizeof(char*));
printf("%d\n", sizeof(long*));
printf("%d\n", sizeof(short*));
printf("%d\n", 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 = %d\n", stu1.name, stu1.age);
//第二种方式
struct Student stu2;
stu2.age = 21;
strcpy(stu2.name, "world");
printf("name = %s, age = %d\n", stu2.name, stu2.age);
return 0;
}
更多概述内容详见:
C语言概述(二)-- 注释,选择、循环结构,函数,数组,操作符,关键字C语言概述(一)-- 数据类型、变量和常量、字符串、转义字符