目录
一.define定义常量和宏
定义:宏在c语言中相当于“文本替换”。
#include <stdlib.h>
#include <stdio.h>
//宏在 c 语言里面相当于“文本替换”
#define MAX 100
#define ADD(x,y) x+y //在这里不能加分号
int main(){
int sum=10+20;
int sun=ADD(10,20);
printf("%d\n",sum);
system("pause");
return 0;
}
二.指针
在介绍指针之前,先来介绍一下在计算机中及其重要的“冯诺依曼体系结构”。
其简略图如下图所示
可以把内存看做是一个楼层,每一个楼层都有若干个房间,比如101室可以住若干个同学;
房间编号 101 相当于计算机内存中的地址,房间内住的人 类比于内存中的数据;
一个房间的大小是1个字节(8个二进制位)。
随机访问:(闪现)以极低的成本访问内存任何一个地址上的数据
指针:保存的数据的含义,就是内存的一个地址(宿舍房间号)
指针完全可以当作一个普通的整数,只不过,这个整数具有一个特定的含义,表示内存上的地址。
#include <stdlib.h>
#include <stdio.h>
int main(){
int a=100; //有了一个房间,房间号还不知道,房间里面的人是100
// p这个变量的类型是一个指针. p里面存的内容就是房间号
//int 类型的指针表示这个房间号里面住的人是一个int类型的变量
int* p=&a;
printf("%d\n",p);
system("pause");
return 0;
}
另外要说的是,一个十六进制的数字可以表示4个二进制位。
下面我们来看看int*占用几个字节(可以看作是房间号,如何去保存)
#include <stdlib.h>
#include <stdio.h>
int main(){
//在32位系统下,一个指针的大小占4个字节
//在64位系统下,一个指针的大小占8个字节
//但是在不同的编译器下也会产生不一样的结果,在vs运行
//环境下虽说是64位操作系统,但是也有可能出现输出为4个字节的情况
printf("%d\n",sizeof(int*));
printf("%d\n",sizeof(char*));
printf("%d\n",sizeof(double*));
printf("%d\n",p);
system("pause");
return 0;
}
三.结构体(很重要)
比如描述学生,学生包含:名字+年龄+性别+学号这几项信息
其代码描述如下:
struct Stu{
char name[20];//名字
int age;//年龄
char sex[5];//性别
char id[15];//学号
}
具体代码实现有:
#include <stdlib.h>
#include <stdio.h>
enum Sex{
//枚举
FEMALE,
MALE,
UNKNOWN
};
//本质上结构体就是自定制类型,自定制类型的含义要根据具体的
//应用场景来决定.自定制结构体里面的内容也是由内置类型/其他自定制类型构成的
struct Student{
//写出结构体中包含的成员
char name[1024]; //1024 Byte ->1 KB
int age;
char id[1024];
enum Sex sex;
};
//上边的结构体等价于
tepedef struct Student Stdent;
//也可以将上边两个代码进行合并,达到简化的效果
//typedef struct Student{
//写出结构体中包含的成员
// char name[1024]; //1024 Byte ->1 KB
// int age;
// char id[1024];
// enum Sex sex;
//}Student;//这里的名字可以改变,但是在后边使用时必须与这里的名字一致 如要改为Stu
int main(){
Student zhangsan={"张三",18,"1234",MALE};//Stu
struct Student lisi={"李四",18,"1235",FEMALE};
printf("%s,%s\n",zhangsan.name,lisi.name);
system("pause");
return 0;
}
最后,在这里祝大家中秋节快乐!