当前位置:
首页
文章
后端
详情

从零开始学习C语言丨程序结构和变量

 本文发布于微信公众号:三玹

本来打算是要说一说变量和数据类型的内容,但是整理一下,发现需要插队先说一下程序结构。另外,还发现数据类型要展开的内容还是蛮多的。因此,数据类型的内容就留待下一篇文章。
程序结构
在上篇文章的最后,写了一段最简单的C语言程序代码 - 打印HelloWorld。借用这段代码,来说一下C语言中的程序结构。
#include<stdio.h>
int main(){
  printf("Hello World");
  return 0;
}

在这段代码里,包含了以下几个部分:

1、预处理指令
在C语言程序中,以#号开始的命令被称之为预处理指令。其作用是,根据源代码中的预处理部分进行处理,处理完毕后才开始正式编译你的源代码。
这段代码中的#include,是文件引入指令。可以引入外部写好的源代码文件,相当于就是将引入的源代码文件复制到自己写的源代码文件中。这样一来,就可以调用外部文件中的内容。
代码中就引用了一个C语言的标准库 stdio.h,可以调用一些输入和输出的方法。例如 scanf、printf 等等。如果没有引入这个文件,就需要自己去实现怎么将内容输入到电脑上,怎么将内容输出到电脑屏幕上。实现这一个过程,其实还是挺复杂的,既然别人已经写好了,那么又何必去大费周章地折腾呢?
2、主函数
主函数相当于是C语言的大门,函数里面的程序就是C语言要运行的主体部分,遇到关键字return就结束程序。同时,每个C语言程序有且仅有一个大门,就像每户人家只有一扇大门。一个有身份的人来拜访,肯定是从大门迎接,也是从大门送客。而这个有身份的人,就是系统。
int 是函数的类型,也就是函数最终要返回的数据是什么类型的。
main 是函数的名字,() 里面是函数的参数内容,{} 里面是函数的逻辑主体,也就是程序运行的主要内容。这些部分,就留待后面函数部分再详细展开。
3、执行程序
在这一段代码中,一共被执行了两个程序。一个是调用了标准库 stdio.h 中的 printf 方法,用来将 Hello World 打印在控制台(电脑屏幕上)。
另一个是 return 0。return 是C语言中的一个关键字,当函数碰到 return 的时候就表示已经结束了,同时还要把 return 后面的内容返回出去。这里返回一个0,表示程序终止的意思。
变量
变量的作用是用来存储值,而值存储的位置是在内存中。可以理解为每创建一个变量就需要在内存中开辟出一个空间,用来存储值。因此,变量指向的是内存中的存储单元。
如果没有变量,那对于程序员无疑是一场灾难。假设我现在有100个变量存放在内存中,那么我需要记住100个编号(内存中有很多的存储单元,每个单元都对应的编号,编号是用十六进制表示:61ff1c)。显然,这是不可能的。
像我这么懒的人,如果看到要记这么多的东西,那这辈子都不可能学编程的。


所以,变量很好地解决了这个问题。值存储在哪个存储单元,它的编号是什么,这就不是我需要考虑的,我只需要记住变量名就够了。而且这个变量名我可以根据值的内容来进行命名比如age、name等等,这不比16进制的编号好记?
一个变量具备了:变量类型、变量名、变量值这三要素。
把内存比作一座准备出租的大楼,每个房子都是一个变量。房子的类型有单间、复式、三室一厅等等,这对应变量的数据类型;房子的编号对应了变量名;入住的租客对应变量值。
声明方式
声明变量的方式一共有两种方式。
第一种,先声明,再赋值。首先要把盒子建好,但是在一开始不知道要往盒子里面装什么具体的东西,等到后面有用的时候装进去。
int main(){
  int a;
  a = 123;
}

第二种,声明时同时赋值。手上有具体的东西,同样第一时间是需要把盒子建好,然后同时把东西放进去。

int main(){
  char c = 'a';
}
命名规则
正所谓无规矩不成方圆,理论上你的变量你爱叫啥叫啥,但是也得在规矩范围内。就像你赚钱你爱怎么赚怎么赚,但就不能赚刑法这本书里面的钱,否则就得请你去吃公家饭了。
C语言中,起变量名的规则有下面几条:
1、变量名必须以字母(A-z)、下划线(_)起头。
2、变量名不能以数字(0-9)起头。
3、变量名中只能包含字母、下划线、数字等。其他花里胡哨的符号是不被允许的。
4、变量名不能和关键字一样,如return、continue、int等等。
5、变量名不允许用空格。
有效变量名:good、for_、_close、ac12_3f
无效变量名:1abc、return、for、hey man
同时C语言中是严格区分大小写的,也就是 A 和 a 是两个不同的变量名。
C语言关键字


本篇文章到这里就结束了,希望能够对大家的学习理解产生帮助。下一篇内容来聊一聊C语言当中的基本数据类型。





















免责申明:本站发布的内容(图片、视频和文字)以转载和分享为主,文章观点不代表本站立场,如涉及侵权请联系站长邮箱:xbc-online@qq.com进行反馈,一经查实,将立刻删除涉嫌侵权内容。

同类热门文章

深入了解C++中的new操作符:使用具体实例学习

C++中的new操作符是动态分配内存的主要手段之一。在程序运行时,我们可能需要动态地创建和销毁对象,而new就是为此提供了便利。但是,使用new也常常会引发一些问题,如内存泄漏、空指针等等。因此,本文将通过具体的示例,深入介绍C++中的new操作符,帮助读者更好地掌握其使用。


深入了解C++中的new操作符:使用具体实例学习

怎么用Java反射获取包下所有类? 详细代码实例操作

Java的反射机制就是在运行状态下,对于任何一个类,它能知道这个类的所有属性和方法;对于任何一个对象,都能调用这个对象的任意一个方法。本篇文章将通过具体的代码示例,展示如何通过Java反射来获取包下的所有类。


怎么用Java反射获取包下所有类? 详细代码实例操作

员工线上学习考试系统

有点播,直播,在线支付,三级分销等功能,可以对学员学习情况的监督监控,有源码,可二次开发。支持外网和局域网私有化部署,经过测试源码完整可用!1、视频点播:视频播放,图文资料,课件下载,章节试学,限时免

员工线上学习考试系统

了解Java中的volati关键字的作用 以及具体使用方法

本篇文章将和大家分享一下Java当中的volatile关键字,下面将为各位小伙伴讲述volatile关键字的作用以及它的具体使用方法。


了解Java中的volati关键字的作用 以及具体使用方法

Java Map 所有的值转为String类型

可以使用 Java 8 中的 Map.replaceAll() 方法将所有的值转为 String 类型: 上面的代码会将 map 中所有的值都转为 String 类型。 HashMap 是 Java

Java Map 所有的值转为String类型