c语言|C语言define和初级指针


目录

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

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

c语言|C语言define和初级指针
文章图片

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语言|C语言define和初级指针
文章图片

指针
%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语言|C语言define和初级指针
文章图片

打印变量地址:
int main() { int a = 10; printf("%p\n", &a); return 0; }

c语言|C语言define和初级指针
文章图片

任何类型的指针变量在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语言|C语言define和初级指针
文章图片

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语言|C语言define和初级指针
文章图片

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语言|C语言define和初级指针】c语言|C语言define和初级指针
文章图片

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

    推荐阅读