《修C传》——初始C语言 <凝气篇>

前言

我叫bang_bang_,生活在银河系-猎户座旋臂-太阳系第三环总体位置中的一颗蓝色星球。我们称呼这颗星球为地球,在这里人们信奉科学,我也不例外。一如往日醒来第一件事打开电脑,映入眼帘的是一个弹窗上面写着"C语言从入门到入土",哼我心想这人间怎么会有如此强大的语言,带着质疑我点击进入突然眼前一闪,我陷入了沉睡。

"一束光照射在我的身体上",我缓缓睁开了眼,眼前是一个全新的世界,所有的事物都是虚拟的由数据组成,我感到了一丝迷茫,"欢迎来到C语言世界,我是这个世界的界灵,我叫✨"一个俏皮的声音传入我的耳中。


1.什么是C语言?

无知的少年我感受到你对C语言的不敬所以特此将你传送过来,我要让你知道C语言的伟大,我将给你传授C语言的知识,C在我们这个世界是根基,在你学不完C语言之前我不会让你永远离不开这个世界,若是想离开这个世界飞升回地球那么就必修成C仙。C世界的修炼体系为:凝气—筑基—结单—元婴—化神—婴变—问鼎—阴虚—阳实—窥涅—净涅—碎涅—空涅—空灵—空玄—天尊—踏天,到了窥涅后,我就会离开,往后的修行只能你自己面对,我也无法提供你有用的帮助,好了废话不多说,先给你讲讲这个世界的基础C语言:

C 语言是一门通用 计算机编程语言 ,广泛应用于底层开发。 C 语言的设计目标是提供一种能以简易 的方式 编译 、处理低级 存储器 、产 生少量的 机器码 以及不需要任何运行环境支持便能运行的编程语言。
二十世纪八十年代,为了避免各开发厂商用的 C 语言语法产生差异,由 美国国家标准局 C 语言制 定了一套完整的美国国家标准语法,称为 ANSI C ,作为 C 语言最初的标准。    目前 2011 12 8 日,国际标准化组织( ISO )和 国际电工委员会(IEC )发布的 C11 标准 C 语言的第三个官方标准,也是 C 语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
其编译器主要有 Clang GCC WIN-TC SUBLIME MSVC Turbo C 等。

这些是你们地球中所记载的内容,现在你就完成来到这个世界的第一个程序吧,这也正式代表你进入了修C体系!


目录

前言

1.什么是C语言?

1.1第一个程序——hello world

2.数据类型

3.变量、常量

 3.1定义变量的方法

3.2变量的分类

 3.3 变量的作用域和生命周期​

3.4常量——(const,#define,枚举)

4.字符串

5.转义字符+注释​


1.1第一个程序——hello world

“这个界灵真是莫名其妙,看来我暂时是回不去地球了,兵来将到水来土掩,我先看看第一个程序吧!”

#include <stdio.h>
int main()
{
    printf("hello world\n");
    return 0; }

 ✨:这一个小小的代码却蕴涵了许多知识,正所谓麻雀虽小五脏俱全。

1.在一个程序中要用预处理指令#include引入头文件,<stdio.h> "standard input&output" 标准输入输出,.h代表头文件

2.main函数是程序的入口,一个工程中main函数有且仅有一个。main函数是个无参返回值为int类型的主函数。

3.因为main函数有返回值,所以要用return返回整型数据。

4.printf打印函数,int printf( const char *format [, argument]... );返回值是打印的字符数,如果出现错误,则返回负值。

printf常用的输出控制符主要有以下几个:

控制符说明
%d按十进制整型数据的实际长度输出。
%ld输出长整型数据。
%mdm 为指定的输出字段的宽度。如果数据的位数小于 m,则左端补以空格,若大于 m,则按实际位数输出。
%u输出无符号整型(unsigned)。
%c用来输出一个字符。
%f用来输出实数,包括单精度和双精度,以小数形式输出。不指定字段宽度,由系统自动指定,整数部分全部输出,小数部分输出 6 位,超过 6 位的四舍五入。
%.mf输出实数时小数点后保留 m 位,注意 m 前面有个点。
%o以八进制整数形式输出。
%s输出字符串。需要用字符串的地址作为参数使用
%x以十六进制形式输出整数。

 “短短5行代码竟然有这么多学问,看来C语言很有意思,✨继续往后讲吧,我要把这些全部吸收纳为己用早日成仙。”

2.数据类型

✨:看来你想通了现状,那么就开启"新手大礼包"吧!

char         // 字符数据类型
short       // 短整型
int         // 整形
long         // 长整型
long long   // 更长的整形
float       // 单精度浮点数
double       // 双精度浮点数

 我感到疑惑,为什么要有这么多数据类型,✨猜中了我的心理话,解释道“为了更确切表达各种值那些C仙创造出了这些数据类型"。

✨:我再给你科普下计算机存储以1个比特(bit)为单位,1个字节(byte)=8bit,这些数据类型的大小是多少呢?我给你写个程序让你看看。

#include <stdio.h>
int main()
{
    printf("%d\n", sizeof(char));            //1字节
    printf("%d\n", sizeof(short));           //2字节
    printf("%d\n", sizeof(int));             //4字节
    printf("%d\n", sizeof(long));            //4字节
    printf("%d\n", sizeof(long long));       //8字节
    printf("%d\n", sizeof(float));           //4字节
    printf("%d\n", sizeof(double));          //8字节
    printf("%d\n", sizeof(long double));     //8字节
    return 0; }

 

✨:这里用到了sizeof操作符,sizeof是求数据存储大小以字节表示

 原来不同的数据类型所使用的内存大小也不同,我已经感受到这些C语言知识转换成C气进入了我的体内,我现在应该已经到了凝气中期。

✨:不错你现在已经达到了凝气中期的境界,但要晋级筑基期还需要学习很多知识,我们继续。

3.变量、常量

✨: 生活中的有些 值是不变 的(比如:圆周率,性别,身份证号码等等)用 常量 来表示;
有些 值是可变 的(比如:年龄,体重)用 变量 表示。

 3.1定义变量的方法

✨:bang_bang_我想考考你变量如何定义呢?

"我觉得是用变量类型和变量名称和值组合在一起",没错!你还挺聪明能够想明白。

int age = 150 ;                        //整型
float weight = 45.5f ;               //单精度浮点型
char ch = 'w' ;                         //字符型

3.2变量的分类

✨:不要小瞧变量喔,几乎在每个程序都需要使用变量,变量也有局部和全局之分,让我带你看看他们之间的区别。

#include <stdio.h>
int year = 2021;//全局变量
int main()
{
    printf("year = %d\n", year);
    int day = 1;//局部变量
    year=2022;
    printf("year = %d\n", year);
    return 0; }

✨:放在函数内的为局部变量,函数外的为全局变量

第一个printf打印全局变量year后重新给year赋值再打印为新赋值。

 3.3 变量的作用域和生命周期

✨: 作用域(scope )是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效 / 可用的而限定这个名字的可用性的代码范围就是这个名字的作用域。
1. 局部变量的作用域是变量所在的局部范围。
2. 全局变量的作用域是整个工程
✨: 变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
1. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
2. 全局变量的生命周期是:整个程序的生命周期。

3.4常量——(const,#define,枚举)

✨:小bang子这个常量还是十分有意思的,让我来给你介绍介绍,可以分成4种:

  • 字面常量
  • const 修饰的常变量
  • #define 定义的标识符常量
  • 枚举常量
#include <stdio.h>
#define MAX 100

enum Sex
{
 MALE,
 FEMALE,
 SECRET
};
//括号中的MALE,FEMALE,SECRET是枚举常量
int main()
{
    //字面常量演示
    3.14;//字面常量
    1000;//字面常量
    
    //const 修饰的常变量
    const float p = 3.14f;   //这里的p是const修饰的常变量
    //p = 5.14;//是不能直接修改的!
    
    //#define的标识符常量 演示
    printf("max = %d\n", MAX);
    
    //枚举常量演示
    printf("%d\n", MALE);
    printf("%d\n", FEMALE);
    printf("%d\n", SECRET);
    //注:枚举常量的默认是从0开始,依次向下递增1的
    return 0;
}

 ✨:#define可以定义标识符常量或者定义宏

#define MAX 100这句定义标识符常量,程序中出现的100都可以用MAX来表示,这样使用的好处是后续需要更改数值的时候只需在#define后进行修改数值,不需要一处处更改。

定义宏:#define ADD(x, y) ((x)+(y))

将这个加法操作定义为ADD(x,y)

 ✨:const修饰变量后,变量的值不能改变,上述代码p被const修饰,若要对p重新赋值,编译器将报错。const还可以修饰指针,这个我们后续在讲,这个关键字十分重要!

 ✨:enum枚举关键字,上述枚举中Sex是枚举名,MALE, FEMALE,SECRET是枚举常量,第一个成员若不指定值,默认为0,后续依次加1,所以打印出来0,1,2

 “很好,我感觉这些知识对我大有益处,吸收了这些C气,我应该可以到达凝气后期,✨待我吸收消化后,我们继续。"

4.字符串

✨:小bang子,境界又更上一楼,马上你就可以踏入筑基了,真是孺子可教也,我们继续吧。

"hello world"

✨:在上面我们就已经见过了字符串,这种由双引号引起来的一串字符称为字符串。字符串通常存入字符数组中来使用。(数组小爷在后面会给你系统讲解,先不要心急)

注意: 字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。

"我还是有点不明白, ✨你可以表示的更清楚一点吗?"

✨:那我给你画图看看吧。

 ✨:在来说说求字符串长度的函数 strlen( const char *string );使用的时候要包含头文件<string.h>,简单的使用求字符串长度的话只需要传入字符串的地址,并且读取到\0就结束,"hello world"长度为11。

#include<stdio.h>
#include<string.h>

int main()
{
	char arr1[] = "hello world";
	int s1 = strlen(arr1);
	printf("%d\n", s1);
	return 0;
}

 ✨:针对字符串有许多函数,我打算在后面再给你细讲,你在凝气期就先简单了解一下就好。

"那好,我感觉我快突破了,我们找个洞府去休息片刻,我稳固下境界”。我四处寻找,终于发现了一个洞穴,我进入其中想把他打造成洞府,这时突然一声"哇"打破了我的行动,我扭头一看,不远处正在冒着绿色的光芒,✨正在那边示意我过去。

5.转义字符+注释

✨:小bang子你的运气很好啊,这个洞穴可能以前有人来过,留下了一团知识精华,让我瞅瞅,这是转义字符和注释的知识,来刚好给你吸收了一举踏入筑基境。

转义字符
释义
\?
在书写连续多个问号时使用,防止他们被解析成三字母词
\'
用于表示字符常量 '
\“
用于表示一个字符串内部的双引号
\\
用于表示一个反斜杠,防止它被解释为一个转义序列符
\a
警告字符,蜂鸣
\b
退格符
\f
进纸符
\n
换行
\r
回车
\t
水平制表符
\v
垂直制表符
\ddd
ddd 表示 1~3 个八进制的数字。 如: \130 X
\xdd
dd 表示 2个十六进制数字。 如: \x30 0

注释:

1. 代码中有不需要的代码可以直接删除,也可以注释掉
2. 代码中有些代码比较难懂,可以加一下注释文字
注释有两种风格:
        C语言风格的注释 /*xxxxxx*/
        缺陷:不能嵌套注释
                C++风格的注释 //xxxxxxxx
                可以注释一行也可以注释多行

这里还有几个问题,你若是能解决那就真正吸收了这团精华,必定可以踏入筑基。

打印\,打印',打印 "

// 程序输出什么?
#include <stdio.h>
int main ()
{
    printf ( "%d\n" , strlen ( "abcdef" ));
    printf ( "%d\n" , strlen ( "c:\test\628\test.c" ));
    return 0 ;
}

我已经知道怎么解了,你就看着吧!

#include <stdio.h>
int main()
{

    printf("%c\n", '\\');
    printf("%c\n", '\'');
    printf("%s\n", "\"");
    return 0; }
//程序输出6和14 ,下面的字符串\62被解析成一个转义字符,\t也是转义字符。
"c:\test\628\test.c"

“我感受到我即将突破到筑基,我的识海中C气正在凝聚形成道台,一念成沧海,一念化桑田,一念斩千魔,一念诛万仙,我相信我也能在C世界中闯出一番天地!道台给我凝聚!"

 

  • 16
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值