C语言学习(四)-基础学习3

在第三次的学习中,我们了解了常变量标识符常量,虽然提到了外部变量,但并未进行详细的阐述,本章将进行详细说明,当然了,在C语言中当然还有很多的其他的类型变量,如果一一的介绍,我想过一阵也都会忘掉,因此,今天除了将前一章并未介绍的外部变量进行讲解,在介绍一种枚举常量指针变量,将不再介绍其余变量,在后续的学习中,边学便介绍更为合适。

外部变量

在实际的工程项目中,一般不会在一个.c文件中将所有的代码全部写出,否则代码会过于冗余,不方便后续的维护和调试。

变量同样如此,我们可以单独写一个只包含变量的.c文件,将相关的变量写在该文件中,那么在这次文件中定义的变量,如何在其他文件中使用呢?

此时就需要使用extern,声明改变量 声明之后,即可在当前函数中使用,我们在add.c文件中声明两个变量,一个为我们熟悉的整型变量,另一个为双精度浮点型变量,所谓双精度浮点型,即其精度要高于整型,可以用来存放小数等高精度数字,其打印类型为%lf,代码如下:

int g_val = 2023;
double v_val = 3.1415926;

此时我回到刚才的test.c文件之中,如果在此文件中,想要使用add.c`中的两个变量,只需声明其为外部变量即可使用,运行以下代码:

#include<stdio.h>
    extern g_val;
    extern v_val;
int main()
{

    int a = 1.213;
    int b = 2;
    int c = 0;
    c = a + b;
    // printf("c = %d\n",c);
    printf("g_val = %lf\n v_val = lf\n",g_val,v_val);
    return  0;
}

正常来说,其应该打印出对应的数值,但是我的在这里出现了错误,目前还为解决。。。

枚举常量

枚举,也就是一一列举的意思,将所有的内容都列举出来,其中的内容即称为枚举常量,值不可更改,命令为enum,运行如下代码:

#include<stdio.h>
enum radar
    {
        fc,
        B,
        Tp,
    };
int main()
{
printf("%d\n",fc);
printf("%d\n",B);
printf("%d\n",Tp);
return 0;
}

保存编译可以看到以下结果:
在这里插入图片描述
也就意味着每一个枚举常量都有一个值,上述所说的不可更改是指:其对应的值无法更改,什么意思呢,如果我想把其中的B改为B0,是可以的,如下所示:

#include<stdio.h>
enum radar
    {
        fc,
        B,
        Tp,
    };
int main()
{
    enum radar change = B;
    change = fc;
return 0;
}

编译结果不会出现问题,如下:
在这里插入图片描述
但如果让改变其值为6,则会报错:
在这里插入图片描述
以上就是枚举常量的内容,看起来很高级的样子,但是:

目前还没搞懂它到底有什么作用,大家就一看,以后真用到再细学。

指针变量

指针,听起来非常的高级,让人心生畏惧,但其实原理很简单,就比如你要去学校的某个地方去见某个人,那你是不是得知道他的位置你才能找的到他,指针的作用就相当于这个地址,你只有找到了这个地址才能访问对应地址存放的数据,指针变量的类型为x*,其中的x为你定义的变量类型,如果是整型则是int*,如果是字符类型则为char*,其余变量类型同理。在此处要打印地址和字符,所以需要知晓其打印类型

地址的打印类型为%p
字符的打印类型为%c

C语言中,取地址的操作符为&,使用该操作符即可取出地址,但是取出地址是我们想要的吗,显然,答案是否定的。我们是需要使用或者改变该地址下存放的内容,此时就需要对地址进行解引用,解引用操作符为*,下面上代码(代码的注释写的较为清楚因此不再进行逐条分析):

#include<stdio.h>
int main()
{
int a = 10;   //4个字节
int* p = &a ; //取出a的地址
//存放地址的变量即为地址变量
*p = 50; //解引用操作符

char b = 'w';
char* m = &b;
*m = 'e';

printf("%p\n",p); //打印变量a的地址
printf("a = %d\n",a);
printf("%p\n",m); //打印变量b的地址
printf("a = %c\n",b);
return 0;
}

可以看到结果如下:
在这里插入图片描述
要注意的是:地址的结果并不会是一样的,即使是同台电脑在在不同时刻打印的地址都会不同,因为每时每刻电脑都在运行,会向外分配空间,因此每次对于定义的变量分配的空间可能都不一样,其打印的地址的格式为16进制,也许你并没有学过数电或其他的相应课程,所以你不懂什么是16进制,不过这都没有关系,下面简要三种最常用的进制类型。

三种常见的进制

所谓进制,我的理解就是用来表示数字的一种形式,不同的进制之间无非是表示方式不同,其他的没有什么本质区别。

二进制

二进制,从名字中可以看出其只能表示2个数字,其用0和1来表示二进制,计算机不可能识别我们说的话,写的字,它都是用一串的二进制数字组成的。在二进制中,其每位的权重是2,权重也就是每位代表的值的大小,例如

1010

在计算机中,最右侧的数字最低位0位,向左依次加1,
那么上述四个二进制数字,那么如果计算为我们所数字的十进制数是多少呢,其计算方式如下
在这里插入图片描述

`重点:`几进制对应的权重即为几

十进制

十进制,用0 1 2 3 4 5 6 7 8 9来表示,一个数值位25的十进制数,由上述可知,其权重自然为10,其实实际上是这样计算的:
在这里插入图片描述

十六进制

知道了二进制和十进制之后,那么十六进制是不是就能表示0 1 2 3 ……15呢,对也不全对。在十六进制中,前十个数字仍然沿用了十进制的表示方法,不过后面6个采用字母表示,分别为A B C D E F,想必现在随便给出一个16进制数,你都可以计算其值了,因此,在此处就不过多赘述。

进制间的转换

各进制之间的转换,大家可以自行查阅,当然了,你不查阅也行,反正由计算机,直接就可以进行进制转换,当然了多学点总是没错的,下面提供一份参考文章:
进制转化-知乎

好了,基础的C语言学习到此基本告一段落,后续不再进行单独的基础内容阐述,基本的编写格式,常用的基础知识,大家都有了一定的了解,其他的内容将在后续的过程中,不断加入,欢迎大家一起来讨论学习。
码字不易,如果方面 ,辛苦大家点个赞喽,谢谢大家!!
Ps:外部变量的问题应该是链接问题,我会尽快解决并将演示效果于后续的某部分内容中。

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器 xiaohu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值