例:
#define MAX 1000 //defeine定义的MAX为常量
int main()
{
printf("%d",MAX);
return 0;
}
define定义宏
#include指针 内存 内存的使用#define ADD(X,Y) X+Y //该宏仅完成替换 int main() { printf("%dn",ADD(2,3)); //运行结果为5 printf("%dn",4*ADD(2,3)); //运行结果为11,而不是4*5 //4*2+3=11 return 0; } #define ADD(X,Y) ((X)+(Y)) //(X)表示x可能为一个表达式,此种写法不会出现上述问题 int main() { printf("%dn",ADD(2,3)); //运行结果为5 printf("%dn",4*ADD(2,3)); //运行结果为20 //4*(2+3)=20 return 0; }
- 内存这种空间的使用与现实生活中空间的使用非常相似。
- 为了有效使用都编了一个精确的地址(指针)。
- 内存被划分成一个一个格子,再给每个格子编号。
32位:32根地址线——物理线,可以通电(1/0),32位二进制的所有可能性(1/0组成的二进制序列)共有232个可能性,即232个编号,即232个地址。
64位:264个地址。
一个内存单元大小为一个字节(1 Byte = 8 bit)。
变量地址调试 -> 打开内存窗口/监视窗口 -> 输入"&a"取的变量a的第一个字节的地址。
int main()
{
int a = 10;
printf("%pn",&a); //运行结果为0x7ffcc17a8c2c,为十六进制
int * pa = &a; //*说明pa是指针变量,int说明pa指向的对象是int型
*pa = 20; //*:解引用操作,*pa即通过pa中储存的地址找到变量a
return 0;
}
指针变量的大小
指针用于存放地址,所以指针变量的大小取决于存储地址需要的空间大小。
32位: 32bit - 4byte
64位: 64bit - 8byte
结构体可以让C语言创建新的类型
struct stu
{
char name[20];
int age;
double score;
};
struct book
{
char name[20];
float price;
char id[30];
};
int main()
{
struct stu s = {"张三",20, 85.5}; //结构体的创建和初始化
printf("1: %s %d %lfn", s.name, s.age, s.score); //结构体.成员变量,输出为张三 20 85.500000
struct stu * ps = &s;
printf("2: %s %d %lfn", (*ps).name, (*ps).age, (*ps).score); //通过指针打印
printf("3: %s %d %lfn", ps->name, ps->age, ps->score); //通过箭头->符号找到地址中的对象打印
//三次打印结果均相同
return 0;
}



