宏和指针.

一、宏

定义宏来比较两个数字的大小

#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个字节

*别忘了点赞收藏哟
在这里插入图片描述

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值