C语言入门,以及编写HelloWorld.c_five-five的博客-程序员信息网_helloworld.c

技术标签: c++  c语言  开发语言  

C语言如何工作

C语言的特点

  • C语言用来创建空间小、速度快的程序
  • C语言旨在创建空间小、速度快的程序。它比其他大多数语言的抽象层次更低,也就是说用C语言写的代码更加接近机器语言。

C语言的工作方式

计算机只理解一种语言——机器代码,即一串二进制0、 1流(计算机可以直接读取)。你可以在编译器(著名的GCC)的帮助下将C代码转化为机器代码。

  • **1.源代码:**从创建一个源文件开始,源文件就是供人阅读的C代码(xxx.c文件)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LGprqRoq-1639449984098)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/3ebcad27-881d-4318-af11-d78ca4911abf/Untitled.png)]

  • **2.编译:**通过编译源代码,编译器会检查错误一旦他觉得没问题,就会编译源代码

    编译指令:gcc x.c -o xx

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4B6JkKq9-1639449984099)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/795b9beb-0b5d-4d62-85da-00894b93f931/Untitled.png)]

  • **3.可执行代码:**编译器会创建一个叫可执行文件的新文件(win是.exe),文件中就是机器代码,即计算机能够理解的0,1流(二进制流),而这个文件就是可以运行的文件

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VuLhFbp7-1639449984100)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/9368d7a9-5904-4d3b-a021-a0cd646740b7/Untitled.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yUKm5dFx-1639449984102)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e2d3d2fb-b347-4b90-8872-dd4f8b9cfa8c/Untitled.png)]

注意:

为了写出速度快、 空间小、 可移植性高的程序, 人们常使用C语言。 绝大多数的操作系统、 其他计算机语言和大多数游戏软件都是用C语言写的。

关于C语言标椎说明:

你可能会遇到三种C标准。 ANSI C始于20世纪80年代后期, 适用于最古老的代码; 1999年开始的C99(Clion编辑器默认使用的标椎)标准有了很大的改进; 在2011年发布的最新标准C11中, 加入了一些很酷、 很新的语言特性。 不同版本的标准之间差别不是很大。

代码说明

展示代码段:

#include <stdio.h>

//函数声明,不写函数体
void demo03();

int main() {
    
    printf("Hello, World!\n");
    printf("第一段C语言程序");
    return 0;
}

int demo01() {
    
    int card_count = 11;
    if (card_count > 10) {
    
        puts("card_count>10==true");
    }
    return 0;
};

void demo02() {
    
    int c = 10;
    while (c > 0) {
    
        puts("我开始学习C语言啦");
        c -= 1;
    }
};

void demo03() {
    
    char ex[20];
    puts("输入女友的名字:\t\n");
		//输入最多长度为19个字符
    scanf("%19s", ex);
    printf("你的女友名字为:%s",ex);
};

void demo04() {
    
    char a = 'H';
    switch (a) {
    
        case 'C':
            puts("梅花");
            break;
        case 'D':
            puts("樊哙");
            break;
        case 'E':
            puts("刘备");
            break;
        case 'H':
            puts("五折天");
            break;
        default:
            puts("黑桃");
    }
};

完整的C语言结构说明:

了创建完整的程序,需要在C源文件中输入代码。任何文本编辑器都可以创建C源文件,它们的文件名通常以.c结尾。

注释段:

说明:注释描述了文件中这段代码的意图,也可能包含一些许可证或者版权信息。在这个地方(或文件的任何地方)添加注释不是必需的,但加上是个好的做法,也是大多数C程序员希望看到的。

/*
* 计算牌盒中牌数量的程序。
* 本代码使用“拉斯维加斯公共许可证”。
* (c)2014, 学院21点扑克游戏小组。
*/

include部分(类比于java的import引包):

说明:

C语言是一种很小的语言,如果不使用外部库,它几乎什么也干不了。为了告诉编译器程序要使用哪些外部代码,需要包含( include)相关库的头文件。 stdio.h是最常见的头文件, stdio库中包含了那些能在终端读写数据的代码。

#include <stdio.h>

函数体:

说明:

所有的C代码都在函数中运行。函数名在返回类型之后出现,如果函数有参数,可以跟在函数名后面。最后是函数体,函数体必须被花括号包围。对任何C程序来讲,最重要的函数是main()函数。 main()函数是程序中所有代码的起点。(程序方法入口)。

//函数声明,不写函数体
void demo03();

int main()
{
    
	int decks;
	puts("输入有几副牌");
	scanf("%i", &decks);
	if (decks < 1) {
    
		puts("无效的副数");
		return 1;
	}
	printf("一共有%i张牌\n", (decks * 52));
	return 0;
}

main函数说明

  1. 计算机会从main()函数开始运行程序。它的名字很重要:如果没有一个叫main()的函数,程序就无法启动。
  2. main()函数的返回类型是int。这是什么意思呢?当计算机在运行程序时,它需要一些方法来判断程序是否运行成功,计算机正是通过检查main()函数的返回值来做到这一点。
  3. 如果让main()函数返回0,就表明程序运行成功;如果让它返回其他值,就表示程序在运行时出了问题。

如何运行C语言程序

  1. C语言是一种编译型语言,也就是说计算机不会直接解释代码,而是需要将给人阅读的源代码转化(或编译)为机器能够理解的机器代码,这样计算机才能够执行。为了编译代码,需要一个叫编译器的程序。
  2. GNU编译器套件(GNU Compiler Collection),也叫gcc,是最流行的C编译器之一。 gcc可以在很多操作系统中使用,而且除了C语言,它还可以编译很多其他语言(强大的java他也可以编译),最重要的是,它是完全免费的。

编译并运行程序的过程参照上文:C语言的工作方式

小技巧:

在大部分机器中,可以使用如下命令进行编译运行代码:

gcc xxx.c -o xxx && ./xxx

这条命令只有在编译成功的情况下才会运行新程序, 一旦编译过程中出了问题, 它就会跳过运行程序这一步, 仅仅在屏幕上显示错误消息。

常见问题解答:

./xxx命令解释(为什么我在Linux和Mac中运行程序时必须在程序前加上./)

因为在类Unix操作系统中,运行程序必须指定程序所在的目录,除非程序的目录已经列在了PATH环境变量中。

我们让用户输入字符串时使用了字符数组,为什么要用字符数组?为什么不用字符串( string)或其他东西?

void demo03() {
    
    char ex[20];
    puts("输入女友的名字:\t\n");
		//输入最多长度为19个字符,过了19这个长度我就不进行记录了
    scanf("%19s", ex);
    printf("你的女友名字为:%s",ex);
};

C语言比其他大多数语言的抽象层次更低,因此它不提供字符串,而是用了相似的东西来代替:以字符为元素的数组。如果你用过其他语言,一定已经见过数组了,数组就是一张有名有姓的事物清单,所以ex只是一个变量名,用来引用你在命令提示符输入的那张字符列表的。把ex定义为大小为20个字符的数组,就可以用ex[0]ex[1]分别引用第一和第二个字符。了解更多关于字符的问题

为什么字符数组下标要从0开始计数

  1. 字符的索引值是一个偏移量:它表示当前要引用的这个字符到数组中第一个字符之间有多少字符。
  2. 计算机在存储器中以连续字节的形式保存字符,并利用索引计算出字符在存储器中的位置。如果计算机知道c[0]位于存储器1 000 000号单元,那么就可以很快地计算出c[96]在1 000 000 + 96号单元。

字符串字面值和字符数组有没有区别?

只有一个区别:字符串字面值是常量。也就是说这些字符一旦创建完毕,就不能再修改它们。是否可以修改取决于你采用的编译器,如果使用的是编译器是gcc,那么当你尝试修改字符串时就会报总线错误

什么是总线错误?

C语言采取不同的方式在存储器中保存字符串字面值。总线错误意味着程序无法更新那一块存储器空间。(简而言之就是无法进行修改)

关于=和==的说明

首先,“等号”不一定表示的就是等于。在C语言中,“等号”用来赋值,而“双等号” 用来检查两个值是否相等(比较的也是指针)。如果想要增加或减小变量的值, 可以用+=-=这两个赋值运算符, 它们让代码看起来更简短。最后,如果想要对变量的值加1或减1,可以用 + +--

int main(){
    
	int i=0;
	i+=1;
	i++;
	i--;
	i-=1;
}

关于True和False的说明

ANSI C标准没有用来表示真和假的值, C程序把0这个值当做假处理, 把0以外的任何值当做真处理。 C99标准则允许在程序中使用true和false关键字。 但编译器还是会把它们当做1和0这两个值来处理。

||、&&和|、&的区别

主要区别在于是否存在短路情况。&和|操作符总是计算两个条件,而&&和||可以跳过第二个条件。I、&还属于位运算符,可以对数字的某一位进行布尔运算。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_45074341/article/details/121922036

智能推荐

Linux练习 一_Jane_Liee的博客-程序员信息网

Linux练习 一1.用命令和正则表达式按照要求建立文件 *)用一条命令建立12个文件WESTOS_classX_linuxY(X的数值范围为1-2,Y的数值范围为1-6) *)这些文件都包含在root用户桌面的study目录中[[email protected] Desktop]# mkdir study[[email protected] study]# touch WESTOS_class{1..

计算机操作系统 实验三:进程通信(一)_ζั͡ޓއއއ๓丶坏男孩的博客-程序员信息网

1 .实验目的学习如何利用管道机制、共享存储区机制进行进程间的通信,并加深对上述通信机制的理解。2 .实验内容(1) 了解系统调用pipe()、shmget()、shmat()、shmdt()、shmctl()的功能和实现过程。(2) 编写一段程序,使其用管道来实现父子进程之间的进程通信。子进程向父进程发送自己的进程标识符,以及字符串“is sending a message to...

三种方式解决你的JS加载乱码_still的博客-程序员信息网_js charset

第一种方式——编码统一 我们以前觉得出现乱码的原因是因为编码不统一,就是因为我们设置编码统一之后,就解决了问题,所以,让html和js的编码统一,是最简单的一个乱码解决方式,原因是什么,是因为,如果你在加载js的时候,并没有声明js的编码格式,那么浏览器会默认的按照当前html的编码格式进行解析引入的js文件,如果你的js和本身页面编码不一样,并且js中引入了中文字符,那么肯定会出...

IE对SVG的支持_Shirley_RL的博客-程序员信息网_ie支持svg吗

1、IE9以上支持SVG,IE11的支持最好。 要支持SVG需要添加 , 并且本地IE内核需要在10以上2、SVG箭头的移动和放大缩小在IE中不是很好的支持,      添加如下行:   (感觉是重绘)参考:http://stackoverflow.com/questions/15693178/svg-line-markers-not-updating-when-line-moves-

认识Robei及Robei优势_FPGA攻城狮的博客-程序员信息网

第一章:认识工具,掌握基础通过今天的学习,读者可以了解集成电路设计工具的历史背景情况,同时熟悉国内外的产业差距。今天的学习将为后面的操作打下基础,读者需要尽可能的熟悉软件和Verilog语法,了解Robei软件的结构和操作方式,并知道如何注册和寻找Robei资源。今天学习完成后,熟悉Verilog语言的读者可以加深记忆,刚刚开始学习FPGA设计的读者也可以轻松地掌握Verilog语言的结构和语法...

全国默哀日中小程序显示灰色_Fighting宁的博客-程序员信息网_小程序变灰

2020/04/04全国默哀日此时大家发现很多网站,app,小程序的整体色调全部变为了灰色,其实并不是所有的图标全部替换了灰色,只是在css中设置了一个属性这以小程序为例子app.wxss全局的样式文件中page { -webkit-filter: grayscale(.95);}此时小程序整体就变为了灰色...

随便推点

java实现调用c接口_weixin_34186931的博客-程序员信息网

我们经常在java中去调用c接口,这是因为时常会有用java实现较难但用c实现较为简单的功能,所有这个时候我们需要编写相关代码实现在java中调用c,如下示例: 1),java文件 JavaCallC.java 2)在C语言中实现上述要在C接口中实现的方法: 如: public native int StrInInt...

安卓10 Android--FAILED: out/soong/build.ninja_qin1137248135的博客-程序员信息网_clang sa is not enabled

[100% 1/1] out/soong/.bootstrap/bin/soong_build out/soong/build.ninjaFAILED: out/soong/build.ninjaout/soong/.bootstrap/bin/soong_build -t -l out/.module_paths/Android.bp.list -b out/soong -n out -d out/soong/build.ninja.d -globFile out/soong/.bootstr...

pytorch实现 分组卷积 深度可分离卷积_wzw12315的博客-程序员信息网_分组卷积pytorch

常规卷积:常规卷积需要的参数量:Cin​×K×K×Cout​分组卷积:分组卷积需要的计算量 :Cin​×K×K×Cout​ / g 深度可分离卷积(Depthwise Separable Convolution): 需要的计算量:Cin​×K×K+Cout​×1×1实现:import torchfrom torchsummary import summaryimport torch.nn as nn'''实现分组卷积demo'''class ...

Android SDK怎么救砖,Android手机刷机变砖后无法开机的修复方法_weixin_39719732的博客-程序员信息网

首先要在电脑上安装配置Android SDK  刷机失败后手机变砖无法在手机上完成操作,此时就需要借助Android SDK工具,所以你必须在操作的电脑上下载并安装Android SDK程序。    程序的下载地址和具体的安装配置方法请参照参考资料:23然后我们需要安装Android手机USB驱动程 安装完Android SDK后就可以把手机通过USB线缆连接至电脑,开启手机电源后电脑会提示安装设...

【漫漫科研路\pgfplots】多个子图共用一个图例_nineheaded_bird的博客-程序员信息网

十月底,投完会议之后,便对科研写作方面遇到的问题进行了探索。问题主要有:问题:文献管理问题:在写论文的过程中,经常要引用他人文献,这时需要费时去寻找。另一方面,有时想要查看曾经读到的某篇文章提到的方法, 也需要去耗时去寻找。画图问题:怎样画出好看的图?解决方案:针对问题1: 使用JabRef针对问题2:使用Pgfplots后面我将会用一系列文章来记录JabRef和Pgfplots的常用使

推荐文章

热门文章

相关标签