黑马程序员——C语言基础--复杂数据类型(指针&枚举&变量)

---------------------- Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ----------------------

指针                                                                                                                          

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值