C语言入门,以及编写HelloWorld.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、&还属于位运算符,可以对数字的某一位进行布尔运算。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

five-five

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

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

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

打赏作者

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

抵扣说明:

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

余额充值