C语言define和初级指针

目录

  • define
    • define定义常量
    • define定义宏
  • 指针

define

define定义常量

#define NUM 1000//定义常量
int main() {
     
	int a = NUM;
	printf("%d\n", a);
	return 0;
}

C语言define和初级指针_第1张图片

define定义宏

int Add(int x, int y) {
     
	int z = x + y;
	return z;
}

//宏-#define可以定义宏
#define ADD(X,Y)  ((X)+(Y))

int main() {
     
	int a = 10;
	int b = 20;
	//函数
	int sum1 = Add(a, b);
	int sum2 = ADD(a, b);//int sum2 = ((a)+(b));

	printf("%d\n", sum1);
	printf("%d\n", sum2);
	return 0;
}

C语言define和初级指针_第2张图片

指针

%s:字符串
%c:字符
%d:有符号的整形
%f:单精度浮点型
%lf:双精度浮点型
%p:地址--地址的十六进制表示形式
//指针
int main() {
     
	int a = 10;
	//printf("%p\n", &a);//取出ade地址,地址是用十六进制表示的
	           //&a 的时候,取的是a所占内存中4个字节中第一个字节的地址

	int* pa = &a;//pa是整型指针变量
	*pa = 20;//*解引用操作符

	printf("%d\n", a);

	char ch = 'w';
	char* pc = &ch;

	//指针是变量,用来存放变量的地址
	return 0;
}

C语言define和初级指针_第3张图片
打印变量地址:

int main() {
     
	int a = 10;
	printf("%p\n", &a);
	return 0;
}

C语言define和初级指针_第4张图片

任何类型的指针变量在32位机器上占4个字节,在64位机器上占8个字节:

int main() {
     
	char ch = 'w';
	char* pc = &ch;

	printf("%d\n", sizeof(pc));
	//指针存的是地址,地址在内存中要开辟空间
	//32位环境下:指针大小是4字节
	//64位环境下,指针大小是8个字节
	return 0;
}

上面是在32位机器上的运行结果:
C语言define和初级指针_第5张图片

32位机器上运行:

int main() {
     
	printf("%d\n", sizeof(char*));
	printf("%d\n", sizeof(int*));
	printf("%d\n", sizeof(double*));
	printf("%d\n", sizeof(float*));
	printf("%d\n", sizeof(short*));
	return 0;
}

C语言define和初级指针_第6张图片
64位机器上运行:

int main() {
     
	printf("%d\n", sizeof(char*));
	printf("%d\n", sizeof(int*));
	printf("%d\n", sizeof(double*));
	printf("%d\n", sizeof(float*));
	printf("%d\n", sizeof(short*));
	return 0;
}

C语言define和初级指针_第7张图片
总结:

  1. 指针变量寸的是变量的地址
  2. int* pa = &a;&a表示取地址,int*表示整形的指针变量
  3. 32位机器上的指针占4个字节,64位机器上的指针占8个字节

你可能感兴趣的