一、宏
定义宏来比较两个数字的大小
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#define MAX(x,y) ((x)>(y)?(x):(y)) //定义宏MAX
int main() {
int a = 10;
int b = 15;
int m = MAX(a, b);
printf("%d\n", m);
return 0;
}
二、指针
//指针
int main() {
int a = 10;
int* pa = &a;//&是取地址符,作用是取出a的地址;pa叫做指针变量,*是解引用操作符,说明pa是指针变量;int说明pa指向的对象是int类型。
printf("%d\n", a);
printf("%d\n", *pa);
*pa = 20;
printf("%d\n", a);
return 0;
}
//*pa === a,*pa等价于a
1、指针变量是用来存放地址的
2、32位机器上地址是32个0/1组成的2进制序列,需要32bit位的空间存储,所以指针变量就需要4个字节
3、64位机器上地址是64个0/1组成的2进制序列,需要64bit位的空间存储,所以指针变量就需要8个字节
1byte = 8bit
三、那么指针变量是多大呢?
结论:指针在32位平台下是4个字节,在64位平台下是8个字节。
例:
32位平台下:
int main() {
char* p1;
int* p2;
double* p3;
printf("%d\n", sizeof(p1));
printf("%d\n", sizeof(p2));
printf("%d\n", sizeof(p3));
return 0;
}
64位平台下:
int main() {
char* p1;
int* p2;
double* p3;
printf("%d\n", sizeof(p1));
printf("%d\n", sizeof(p2));
printf("%d\n", sizeof(p3));
return 0;
}
注:原本char是1个字节,int是4个字节,double是8个字节,但是它们的指针变量大小与平台是32位或者64位有关,如果是32位则它们的指针变量大小统一是4个字节,如果是64位平台,则是8个字节
*别忘了点赞收藏哟