一、#define定义常量和宏
1.#define 定义常量
#define MAX=1000;(定义常量MAX,他的值为1000)
#define STR "abcde"(定义常量STR 为字符串abcde)
2.定义宏
宏跟函数很像,但不相同
#define ADD(x,y) ((x)+(y)) (定义ADD 宏体功能是x+y,宏的参数没有类型。)
二、指针
1.一个内存大小为一个字节,每个内存单元都有一个编号,编号就称为该内存单元的地址,我们把地址也叫指针
例如 int a=1; 当a创建完后,占用四个字节,每个字节都有一个地址,&a取地址a取出的是第一个字节的地址。
int * pa=&a;//pa是创建出来存放地址的,pa为指针变量 (int说明的是pa指向的对象,也就是a为int类型,*说明pa是个指针变量,int*整体是一个整形指针变量。)
*pa;(*是解引用操作符,*pa就是通过pa中存放的地址,找到pa指向的空间)
&-取地址操作符,用来取出谁的地址。
指针变量的大小
我们可以用sizeof来计算指针变量的大小,sizeof对应的打印格式为%zu
int main()
{
printf("%zu\n", sizeof(char *));
printf("%zu\n", sizeof(short *));
printf("%zu\n", sizeof(int *));
printf("%zu\n", sizeof(double *));
return 0; }
当我们使用的是64位环境下,他的结果为64bit=8Byte
当我们为32位环境下,指针变量大小均为32bit=4Byte
三、结构体
我们平常使用的都为单个数据,但是实际生活中往往不是单个数据,比如一个学生,他有身高,体重,性别,学号等等等,这时候我们就需要用到C语言中的结构体来实现。
简单结构体举例:
struct Tag struct Stu //结构体类型
{ {
成员列表; char name[20];
} int age;
float score;
}
void print(struct Stu *ps)
{
1.printf("%s %d %f\n",(*ps).name,(*ps).age,(*ps).score);//(也可以用地址来输出结构体)
2.printf("%s %d %f\n",ps->name,ps->age,ps->score);//(结构体指针->结构体成员)
}
int main()
{
struct Stu s1={"zhangsan",20,95.5f}//结构体初始化
struct Stu s2={"lisi",40,99.8f}//结构体初始化
scanf("%s %d %f",s1.name,&(s1.age),&(s1.score));//输入结构体 在scanf中传参时数组不需要取地址,这里name是个数组
printf("%s %d %f",s1.name,s1.age,s1.ccore);//输出结构体
print(&s2)
}
总结
以上就是今天要讲的内容,本文简单介绍了C语言当中的结构体和指针,还需多多复习哦。