指针
指针是C语言中用的最多的一个知识点,它是用来储存地址的,储存地址的这个变量就成为指针。
屋子上面的门牌号就相当于指针(地址),屋子里的空间就相当于内存。
指针与字符串
定义字符串的两种方式:
1.利用数组
charname[]=“it”//字符串变量可以修改存放与栈里,可以随意修改
2.利用指针
char*name[]=“it”//字符串常量不可修改存放在常量区,不可修改指针变量之喜爱那个字符串首字符
tips:
1.常量区:存放一些常量字符串
2.堆:对象
3.栈:存放局部变量
指向函数的指针
写法: void (*p)()
(*p)是固定写法,代表指针变量p将来肯定是指向函数
左边的void:指针变量p指向的函数没有返回值
右边的():指针变量p指向的函数没有形参
指向结构体的指针
intmain()
{
structStudent
{
intno;
intage;
};
structStudentstu={1,20};
structStudent*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);
return0;
}
掌握:
1.看懂语法
2.定义指向函数的指针
doubletest(doublea,char*b,intc)
{}
//定义
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,……};
enumSeason{spring,summer,autumn,winter};
枚举变量的定义
1.先定义枚举类型,再定义枚举变量
enumSeason{spring,summer,autumn,winter};
enumSeasons;
2.定义枚举类型的同时定义枚举变量
enumSeason{spring,summer,autumn,winter}s;
3.省略枚举名称,直接定义枚举变量
enum{spring,summer,autumn,winter}s;
上面三种方式定义的都是枚举变量s
枚举使用注意
1> C语言编译器会将枚举元素(spring、summer等)作为整型常量处理,称为枚举常量。
2> 枚举元素的值取决于定义时各枚举元素排列的先后顺序。默认情况下,第一个枚举元素的值为0,第二个为1,依次顺序加1。
enumSeason{spring,summer,autumn,winter};
也就是说spring的值为0,summer的值为1,autumn的值为2,winter的值为3
3> 也可以在定义枚举类型时改变枚举元素的值
enumseason{spring,summer=3,autumn,winter};
没有指定值的枚举元素,其值为前一元素加1。也就说spring的值为0,summer的值为3,autumn的值为4,winter的值为5
枚举的基本操作
1.赋值
可以给枚举变量赋枚举常量或者整型值
enumSeason{spring,summer,autumn,winter}s;
s=spring;//等价于s=0;
s=3;//等价于s=winter;
2.遍历枚举元素
enumSeason{spring,summer,autumn,winter}s;
//遍历枚举元素
for(s=spring;s<=winter;s++){
printf("枚举元素:%d\n",s);
}
枚举类型sample:
#include
intmain()
{
//1.定义枚举类型
enumSeason
{
Spring,
Summer,
Autumn,
Winter
};
//2.定义枚举变量
enumSeasons=Winter;
printf("%d\n",s);//输出结果是3,因为spring=0,summer=1,以此类推winter=3.
return0;
}
数据类型总结
一.基本数据类型
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>float4字节 %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