指针
指针是C语言中用的最多的一个知识点,它是用来储存地址的,储存地址的这个变量就成为指针。
屋子上面的门牌号就相当于指针(地址),屋子里的空间就相当于内存。
定义字符串的两种方式:
1.利用数组
char name[] = “it” //字符串变量 可以修改 存放与栈里,可以随意修改
2.利用指针
char *name[] = “it” //字符串常量 不可修改 存放在常量区,不可修改 指针变量之喜爱那个字符串首字符
tips:
1.常量区:存放一些常量字符串
2.堆:对象
3.栈:存放局部变量
写法: void (*p)()
(*p)是固定写法,代表指针变量p将来肯定是指向函数
左边的void:指针变量p指向的函数没有返回值
右边的():指针变量p指向的函数没有形参
int main() { struct Student { int no; int age; }; struct Student stu = {1,20}; struct Student *p; p = &stu; //第一种方式 printf(“age=%d,no=%d\n”,stu.age,stu.no); //第二种方式 printf(“age=%d,no=%d\n”,(*p).age,(*p).no); //第三种方式 printf(“age=%d,no=%d\n”,p->age,p->no); return 0; }
掌握:
1.看懂语法
2.定义指向函数的指针
double test(double a,char *b, int c) { }
//定义
double (*p)(double,char *,int); p = test;或double (*p)(double,char *,int) = test;
3.如何间接调用函数
1>p (10.1,”Tom”,10);
2>(*p)();
个人觉得指针和windows上面的快捷方式有点相同。
快捷方式可以指向一个可执行程序,这就是普通的指针。
快捷方式可以指向一个快捷方式,这就是指向指针的指针。
快捷方式可以指向一个文件夹,这可以理解为指向数组的指针。
什么是枚举类型?
枚举是C语言中的一种基本数据类型,并不是构造类型,它可以用于声明一组常数。当一个变量有几个固定的可能取值时,可以将这个变量定义为枚举类型。比如,你可以用一个枚举类型的变量来表示季节,因为季节只有4种可能的取值:春天、夏天、秋天、冬天。
枚举类型定义:enum 枚举名 {枚举元素1,枚举元素2,……};
enum Season {spring, summer, autumn, winter};
枚举变量的定义
1.先定义枚举类型,再定义枚举变量
enum Season {spring, summer, autumn, winter}; enum Season s;
2.定义枚举类型的同时定义枚举变量
enum Season {spring, summer, autumn, winter} s;
3.省略枚举名称,直接定义枚举变量
enum {spring, summer, autumn, winter} s;
上面三种方式定义的都是枚举变量s
1> C语言编译器会将枚举元素(spring、summer等)作为整型常量处理,称为枚举常量。
2> 枚举元素的值取决于定义时各枚举元素排列的先后顺序。默认情况下,第一个枚举元素的值为0,第二个为1,依次顺序加1。
enum Season {spring, summer, autumn, winter};
也就是说spring的值为0,summer的值为1,autumn的值为2,winter的值为3
3> 也可以在定义枚举类型时改变枚举元素的值
enum season {spring, summer=3, autumn, winter};
没有指定值的枚举元素,其值为前一元素加1。也就说spring的值为0,summer的值为3,autumn的值为4,winter的值为5
1.赋值
可以给枚举变量赋枚举常量或者整型值
enum Season {spring, summer, autumn, winter} s; s = spring; // 等价于 s = 0; s = 3; // 等价于 s = winter;
2.遍历枚举元素
enum Season {spring, summer, autumn, winter} s; // 遍历枚举元素 for (s = spring; s <= winter; s++) { printf("枚举元素:%d \n", s); }
枚举类型sample:
#include <stdio.h> int main() { // 1.定义枚举类型 enum Season { Spring, Summer, Autumn, Winter }; // 2.定义枚举变量 enum Season s = Winter; printf("%d\n",s); // 输出结果是3,因为spring = 0,summer = 1,以此类推winter = 3. return 0; }
1.int
1>.long int, long 8字节 %ld
2>.short int,short 2字节 %d %i
3>.unsigned int,unsigned 4字节 %zd
4>signed int,signed,int 4字节 %d %i
2.float\double
1>float 4字节 %f
2>double 8字节 %f
3.char
1>1个字节 %c,%d
2>char类型保存在内存中得是他的ASCII值
‘A’ == 65
1.数组
1>只能由同一种类型的数据组成
2>定义:数据类型 数组名[元素个数]
2.结构体
1>可以由不同类型的数据组成
2>先定义类型,再利用类型定义变量
1.变量的定义
int *p;
2.间接操作变量的值
int a = 10;
p = &a;
*p = 20;
使用场合:当一个变量只允许有几个固定取值时
根据变量的作用域,可以分为:
1.局部变量:
1>:定义:在函数(代码块)内部定义的变量
2>作用域:从定义变量的那一行开始,一直到代码块结束
3>生命周期:从定义变量的那一行开始分配存储空间,代码块结束后,就会被回收
4>没有固定的初始值
2.全局变量:
1>定义:在函数外面定义的变量
2>从定义变量的那一行开始,一直到文件结尾
3>生命周期:程序一启动就会分配存储空间,程序退出时收回
4>默认初始值就是0