c语言复杂数据类型存储,C语言基础-复杂数据类型

指针

指针是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 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值