12. #define 定义常量和宏
//define 定义标识符常量 #define MAX 1000 //define 定义宏 #define ADD(x, y) ((x)+(y)) #include <stdio.h> int main () { int sum = ADD ( 2 , 3 ); printf ( "sum = %d\n" , sum ); sum = 10 * ADD ( 2 , 3 ); printf ( "sum = %d\n" , sum ); return 0 ; }
与函数差不多,各有优缺点,后面会讲
13. 指针
//对于指针,有很多人一听到就会怕,其实指针也没有那么恐怖,而且现在还是在"初识C语言"中,只会让大家对于这些东西有一个大体的了解,所以大家干就完了=。=!
13.1 内存
内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。
所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是 1 个字节 。
为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该 内存单元的地 址 。
变量是创建内存中的(在内存中分配空间的),每个内存单元都有地址,所以变量也是有地址的。
取出变量地址如下:
#include <stdio.h> int main () { int num = 10 ; & num ; // 取出 num 的地址 // 注:这里 num 的 4 个字节,每个字节都有地址,取出的是第一个字节的地址(较小的地址) printf ( "%p\n" , & num ); // 打印地址, %p 是以地址的形式打印 return 0 ; }
PS:
地址存放是16进制的
那地址如何存储,需要定义指针变量。
int num = 10 ; int * p ; //p 为一个整形指针变量 p = & num ; 指针的使用实例: #include <stdio.h> int main () { int num = 10 ; int * p = & num ; * p = 20 ; return 0 ; }
//这里num本来是10,*p就是相当于num,即结果就是num等于20。
以整形指针举例,可以推广
#include <stdio.h> int main () { char ch = 'w' ; char* pc = & ch ; * pc = 'q' ; printf ( "%c\n" , ch ); return 0 ; }
//这里ch为原来的'w',改为了'q'。
PS:对于指针变量的用法 (存放地址是为了以后要用的时候通过p去访问a,或者改变a)
我们把地址也称为指针 这个变量(如p)是用来存放地址的也是用来存放指针的所以也称为指针变量,当你在使用指针变量的时候其实是在使用里面的地址(如a)
总结:指针就是地址,地址也被称为指针,当指针(或地址)要被存起来的时候,这个变量就被称为指针变量,这个指针变量就是用来存放地址的(存放别人的地址)(在指针变量的眼里所有的东西都是地址,只要你把一个东西存进去,他就会把他当做地址)
13.2 指针变量的大小
#include <stdio.h>
// 指针变量的大小取决于地址的大小
//32 位平台下地址是 32 个 bit 位(即 4 个字节)
//64 位平台下地址是 64 个 bit 位(即 8 个字节)
int main () { printf ( "%d\n" , sizeof ( char * )); printf ( "%d\n" , sizeof ( short * )); printf ( "%d\n" , sizeof ( int * )); printf ( "%d\n" , sizeof ( double * )); return 0 ; }
结论 :指针大小在 32 位平台是 4 个字节,64位平台是 8 个字节。
//这个大小就没啥好说的哈,大伙记住就行。14. 结构体
结构体是 C 语言中特别重要的知识点,结构体使得 C 语言有能力描述复杂类型。
比如描述学生,学生包含: 名字 + 年龄 + 性别 + 学号 这几项信息。
这里只能使用结构体来描述了。
例如:
struct Stu { char name [ 20 ]; // 名字 int age ; // 年龄 char sex [ 5 ]; // 性别 char id [ 15 ] ; // 学号 };
结构体的初始化:
// 打印结构体信息
struct Stu s = { " 张三 " , 20 , " 男 " , "20180101" };
//张三真惨,法律上是例子,结构体也是=。=
//. 为结构成员访问操作符
printf ( "name = %s age = %d sex = %s id = %s\n" , s . name , s . age , s . sex , s . id );
//-> 操作符
struct Stu * ps = & s ;
printf ( "name = %s age = %d sex = %s id = %s\n" , ps -> name , ps -> age , ps -> sex , ps -
> id );
(也是先让大家了解结构体哈!,不懂完全没有问题=。=!)
本章完!!!
接下来就会按照"初识C语言"中的内容逐个详解!!!
让大家更好地去体会C语言的魅力!!!
如果我的文章对大家有帮助的话,请来个点赞加关注吧!
当然要是有什么不对的地方,欢迎大家在评论区斧正!
让我们一起加油吧!!!!!