C语言的那些少见的事1

这篇具有很好参考价值的文章主要介绍了C语言的那些少见的事1。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言:

1.变量名称的意义

2.卖函数库的知识

3.变长数组

4.清空输入缓冲区

5.左值和右值

6.for控制语句中定义变量

7.刷题中浮点数的精度问题

8.C语言提供C的标准和C库的约定

9.extern声明外部符号


❤博主CSDN:啊苏要学习

  ▶专栏分类:C语言◀

  C语言的学习,是为我们今后学习其它语言打好基础,C生万物!

  开始我们的C语言之旅吧!✈


前言:

  兜兜转转,经过较长时间的学习、总结出一篇C语言的那些少见的事,各位看官久等了

1.变量名称的意义

  在创建变量的时候,我们通过都被要求起个名字。大家可能不太清楚这个名字的的作用是什么,而只是知道拿起变量名,该怎用就怎么用。

  实际上,变量名是方便我们程序员自己的一个标签。这是为什么呢?首先我们需要知道的一点是:计算机进行操作时,是找到相应地址,对地址内存储的数据进行更改,计算机才不管你给变量起什么名字,名字起的好与坏,是程序员容不容易理解的问题

  我们只需要知道,变量名称标识了一块内存空间,使用变量名,就是在对相应的内存块进行操作,我们不必知道计算机是如何寻址找到那块空间的

  这时候有小伙伴会问?博主那有没有什么办法,既不要给内存空间起名字,又能使用这块内存空间呢?答案是可以的。和往常一样,首先你要向操作系统申请内存空间,第二就是返回指向这块内存空间的指针

  一般这种情况都是在动态内存开辟的时候使用动态内存分配函数malloc、calloc、realloc开辟堆区上的空间,这些函数会返回指向开辟空间的指针,并且这块空间没有名字

2.卖函数库的知识

  在我们掌握了编程的知识后,我们将一些在工作时可能用到的函数,并且库函数里没有,封装在一个自己实现的库里面,将这个库卖给需要的买方当然这个库实现的功能要足够的强大才有人买(doge)

  这里博主给出一个流程,大家看完之后可以去实现一下,方便日后将自己的能力变现

  • 写出函数的.h文件和.c文件

C语言的那些少见的事1

  .h文件放的是函数的声明、.c文件放的是函数的定义(实现函数的文件)由于我们卖库并不想把我们实现函数的思路和代码卖出去,我们需要将声明和定义分开来,这种方法不仅能让买方无法得知我们如何实现函数的

  补充:还有的好处体现在工作的时侯,需要分工协作完成一个项目。我们不可能都在同一个.c文件里写函数,也不可能说,你先写完你那部分的功能,我再打开.c文件写我负责的那一部分所以每个程序员负责的模块都自己写一个.h和.c文件,到最后包含头文件(相当于包含声明)放在一个文件里,将各种函数的实现组装在一起完成任务

  • 改变项目的属性配置

 

C语言的那些少见的事1

C语言的那些少见的事1

  • 调整完成后,ctrl+f5运行起来会生成相应的.lib文件在相应的路径下

C语言的那些少见的事1


这里会报错,不过没关系,这只是因为我们没有用main函数生成可执行程序而已。然后就到相应的路径下查看.lib文件,用记事本打开你会发现里面全是乱码,这是因为它已经是二级制文件了。

C语言的那些少见的事1

  • 将.lib文件和.h文件出售

  因为.lib文件是看不懂的,所以买方根本不知道这里面有什么样的函数,我们顺带把.h文件也卖出去,相当于是.lib库使用的说明书.h文件里面包含着.lib文件里的各种函数声明以及函数的返回类型、函数名、参数、功能描述等

  • 买方买到后如何使用静态库(.lib)

C语言的那些少见的事1

C语言的那些少见的事1

   在编译器头文件里添加现有项.h文件

C语言的那些少见的事1

  添加完之后,要引用头文件,也就是包含函数声明并且要用一句代码导入静态库,就可以使用啦~

C语言的那些少见的事1

  成功啦!以上就是一个过程~


  补充:自己的头文件用""(双引号),库的头文件用<>(尖括号)区别在于,""包含的头文件,编译器先在本地里找文件,找不到再去C库(编译器软件里实现函数的文件)里找。<>包含的头文件,编译器先在编译器软件里找,找不到再到本地里找

3.变长数组

  C99中规定,可以允许我们使用变量当做指定数组元素的个数。如果编译器支持C99标准的话,我们可以实现下面的表示:

int main
{
    int n = 10;
    int arr[n];
    return 0;
}

  其中n是变量,还有一点需要注意的是,变长数组不能进行初始化。 

4.清空输入缓冲区

   清空输入缓冲区,可以使用循环getchar()将输入缓冲区里的内容逐一全部清空,具体实现如下:

int main()
{
    while(getchar() != '\n')
    {
        ;
    }
    return 0;
}

  因为不需要这个循环具体做什么事情,所以我们在循环体里放的是空语句getchar正常读取返回读取到的字符对应的ASCII码值,读取失败返回EOF。scanf正常读取返回读取成功的个数,读取失败返回EOF。 

  另外还可以使用fflush(stdin)函数清空输入缓冲区,但在VS上这个函数的功能被取消了

C语言的那些少见的事1

  冲洗stdin(standard input),清理标准输入流,这样会好记一点

5.左值和右值

  左值和右值的意思分别是:左值是一块空间;右值是一个数值、空间的内容

#include <stdio.h>

int main()
{
    int a = 10;
    const int b = 8;
    a = 20;//a是左值,b是右值,a代表的是可以存放整型的内存空间
    b = 10;//error,这个时候编译器会报错---左值不可被修改
    //因为const修饰的b变量它这块空间里的内容是不能被改变的
    return 0;
}

6.for控制语句中定义变量

  在C99标准中,支持在for循环控制条件初始化部分定义变量

#include <stdio.h>

int main()
{
    //C99标准支持这样创建变量i
    for(int i = 10; i >= 0; i--)
    {
        printf("%d ", i);
    }
    return 0;
}

7.刷题中浮点数的精度问题

  在使用牛客网或力扣进行刷题的时候,往往对于浮点数并没有明确要求使用float还是double类型,float和double的区别是它们所占空间大小不一样,所以对于精度的存储也不一样

  如果对于精度这方面有能力直接看出来的,就用表示对应精度的类型就ok。如果不行我们就让两种类型换着去解题也是可以的,也就是float的精度不能很好匹配就用doubel、或是精度太高了我们就返回去使用float类型对应double类型的输入输出格式是%lf

int main()
{
    float f = 3.2;//在VS下,3.2虽然是单精度的表示
    //但编译器仍看成是double的类型,可以在3.2后面加上f表示是float类型
    float c = 3.2f;//这样就不会有double向float类型装换,精度丢失的警告了
    return 0;
}

  小数3.2在VS编译器下默认是double类型

8.C语言提供C的标准和C库的约定

  我们在使用库函数的时候,经常说函数是C库提供的。实际上,函数的定义并不是由C语言函数库直接实现的,而是由编译器的厂商实现的。比如VS、GCC编译器实现scanf函数

  C库只规定函数的功能、名字、参数和返回值各大厂商根据这个标准去实现库函数,即使在不同编译器中,内部实现库函数的方式可能略有不同,但使用起来的效果是一样的,这就是因为C语言提供了标准形成的局面

9.extern声明外部符号

  在学习关键字extern的时候,extern是用来声明外部符号的。

C语言的那些少见的事1

  然而我们并不一定需要用加extern来声明外部符号glo_bal、Add也可以正常使用的


结语:希望读者读完有所收获!在学C的路上,祝福我们能越来越C!✔

  读者对本文不理解的地方,或是发现文章在内容上有误等,请在下方评论区留言告诉博主哟~,也可以对博主提出一些文章改进的建议,感激不尽!最后的最后!

  ❤求点赞,求关注,你的点赞是我更新的动力,一起努力进步吧。文章来源地址https://www.toymoban.com/news/detail-432530.html

到了这里,关于C语言的那些少见的事1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【新星计划·2023】Linux目录与文件之权限意义讲解

    作者: Insist-- 个人主页: insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 前言 通过上篇文章,我们知道了Linux 系统内文件的三种身份( 拥有者、群组与其他人 ),还知道每种身份都有三种权限( rwx ), 已知道能够使用 chown, chgrp, chmod 去修改这些权限与

    2024年02月12日
    浏览(39)
  • C语言数据结构(0)——前言

    欢迎来到博主的新专栏——C语言与数据结构 博主id:代码小豪 在前两个专栏当中,博主已经大致的讲过了C语言中的大部分使用方法。大家都知道,学习英语时,首先掌握的是单词,随后学习语法,如此才能融会贯通的学习英语。如果学英文只会单词,那么阅读虽然不成问题

    2024年01月17日
    浏览(42)
  • 那些惊为天人的变量名,真是奇葩!

    来源:麦叔编程 作者:小K 一个好的 变量名 能让读代码的人(包括写的人),身心舒畅,但一个“奇葩”的 变量名 可能会逼疯一个程序员。 今天是 奇葩变量名大赏 ! 注:以下素材均采集自网络 先上场的是某企业机房的门牌: 我猜这个主任可能是个胡建人。 推荐一个开

    2024年02月08日
    浏览(36)
  • 【c语言】详解c语言#预处理期过程 | 宏定义前言

    c语言系列专栏: c语言之路重点知识整合   创作不易,本篇文章如果帮助到了你,还请点赞支持一下♡𖥦)!!  主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步! 给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ 代码编译到执

    2024年02月01日
    浏览(46)
  • C++ namespace对全局变量屏蔽的工程化意义解读

    namespace解决了什么? 解决了变量的跨域访问问题 C++解决了C语言不能访问全局变量的问题 推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家: 零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核) https://xxetb.xet.tech/s/VsFMs

    2024年02月12日
    浏览(34)
  • Flume监听多个文件目录,并根据文件名称不同,输出到kafka不同topic中

    https://blog.csdn.net/qinqinde123/article/details/128130131 flume监听到有新文件出现的时候,会将文件内容推送到kakfa的topic中,但是如果文件夹中有不同类型的文件,直接推送到kafka的同一个topic中,如果根据内容无法区分不同类型的文件,那就需要根据文件名称来区分。flume本身根据配置

    2023年04月08日
    浏览(59)
  • 无法将“环境变量”项识别为 cmdlet、函数、脚本文件或可运行程序的名称(pycharm)

    一、Conda.exe无法正常识别的问题: 今天安装完VSCode,调试代码时发现终端提示以下报错信息,网上查了相关帖子,并依照参考1的方式进行了以下调试: 参考其它博客(参考2)说是环境变量没有添加,但是我试了之后发现不是这个问题。 原因其实就是找不到途中说的conda.e

    2024年02月12日
    浏览(54)
  • 贝尔金路由器的少见故障的详解

      一、ACL是一张应用于路由器某个接口的一组命令列表,这个列表告诉路由器哪种数据包应该接收,哪种必须禁止,从而达到数据过滤的效果,这是一个有效控制网络安全的手段。这个列表的书写涉及到源地址、目标地址、端口号这几个参数。 1、ACL是顺序执行的,而且在所

    2024年02月05日
    浏览(38)
  • Spring 中一个少见的引介增强 IntroductionAdvisor

    我们平时做 AOP 开发的时候,基本上都是增强某一个方法,在某一个方法执行之前或者执行之后做一些事情,这种叫做 PointcutAdvisor,实际上,Spring 中的 Advisor 大致可以分为两种类型,除了 PointcutAdvisor 之外,还有另外一种 Advisor 叫做 IntroductionAdvisor,因为最近想和小伙伴们聊

    2024年02月15日
    浏览(26)
  • C语言:指针类型的意义

    1.指针的类型决定了解引用时访问几个字节 2.指针的类型决定了指针+1、-1跳过几个字节 一、指针的类型决定指针解引用时访问几个字节 例如 int 型指针解引用时访问4个字节         char 型指针解引用时访问1个字节   详解代码如下: int b = 0x11223344(十六进制,小端存储,实

    2024年02月11日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包