register关键字介绍
register时寄存器关键字
register关键字只能作用于局部变量,不能作用于全局变量。
register关键字指明将局部变量存储于寄存器中。
register只是请求将这个变量存放到寄存器当中,但不一定能够请求成功
#define 定义常量和宏
用define定义标识符常量
用define定义宏
注意:宏参数是无类型的
指针
内存
内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。 所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。 为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地 址。
打印a的地址
#include<stdio.h> int main() { int a=10; //定义变量a,开辟四个字节的空间 int *c=&a; //定义指针变量c,并将a的地址放入其中 printf("%d",*c); // 打印c地址中所1存放的数值 printf("%p",c) //打印c的地址 return 0; }
&a含义:取出a的地址,&为取地址符号
用int *类型定义一个变量将a地址里所存放的数字,赋值给int *类型的变量c,
int * c=&a含义,int 说明c指向的对象是int类型,*说明p是指针变量,
不管是什么类型的指针,都是在创建指针变量 如 char *a就是一个指针变量
指针变量是用来存放地址的
指针变量的大小取决于一个地址存放的时候需要大多空间
指针变量的大小
指针变量的大小跟系统的操作位数有关。
注:*c是指int *类型的变量c所在的地址中存放的变量。c是指以int *为类型的指针变量所指向的地址。
结构体
结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型。 比如描述学生,学生包含: 名字+年龄+性别+学号 这几项信息。 这里只能使用结构体来描述了。
定义结构体
这里电话用12个空间是因为,字符串里面\0也要占用一个空间
#include <stdio.h> struct Stu { char name[100]; //姓名 int age; //年龄 char sex[10]; //性别 char tele[12]; //电话 };
struct Stu为一个结构体类型,里面的为结构体变量
给结构体赋值
赋值方法:分别按照所定义的结构体内的变量类型,按顺序赋予相应的值
struct Stu a是定义一个变量a a是结构体类型struct Stu
引用结构体变量
直接引用:用结构体变量a再加一个. 然后选择所对应的结构体变量
以指针的方式引用:用结构体名->进行应用