写点什么

C 语言从入门到精通(二)

用户头像
代码情缘
关注
发布于: 2021 年 06 月 07 日
C语言从入门到精通(二)

Hello world

  • 这个世界上, 几乎所有程序员入门的第一段代码都是 Hello World.

  • 原因是当年 C 语言的作者 Dennis Ritchie(丹尼斯 里奇)在他的名著<The C Programming Language>中第一次引入, 传为后世经典, 其它语言亦争相效仿, 以示敬意

如何创建 C 语言文件


C 语言程序组成

  • 手机有很多功能, "开机","关机","打电话","发短信","拍照"等等

  • 手机中的每一个功能就相当于 C 语言程序中的一个程序段(函数)

  • 众多功能中总有一个会被先执行,不可能多个功能一起执行

  • 想使用手机必须先执行手机的开机功能

  • 所以 C 语言程序也一样,由众多功能、众多程序段组成, 众多 C 语言程序段中总有一个会被先执行, 这个先执行的程序段我们称之为"主函数"


  • 一个 C 语言程序由多个"函数"构成,每个函数有自己的功能

  • 一个程序有且只有一个主函数

  • 如果一个程序没有主函数,则这个程序不具备运行能力

  • 程序运行时系统会自动调用主函数,而其它函数需要开发者手动调用

  • 主函数有固定书写的格式和范写




函数定义格式

  • 主函数定义的格式:

  • int 代表函数执行之后会返回一个整数类型的值

  • main 代表这个函数的名字叫做 main

  • () 代表这是一个函数

  • {} 代表这个程序段的范围

  • return 0; 代表函数执行完之后返回整数 0


int main() {    // insert code here...    return 0;}
复制代码


  • 其它函数定义的格式

  • int 代表函数执行之后会返回一个整数类型的值

  • call 代表这个函数的名字叫做 call

  • () 代表这是一个函数

  • {} 代表这个程序段的范围

  • return 0; 代表函数执行完之后返回整数 0


int call() {    return 0;}
复制代码



如何执行定义好的函数

  • 主函数(main)会由系统自动调用, 但其它函数不会, 所以想要执行其它函数就必须在 main 函数中手动调用

  • call 代表找到名称叫做 call 的某个东西

  • () 代表要找到的名称叫 call 的某个东西是一个函数

  • ; 代表调用函数的语句已经编写完成

  • 所以 call();代表找到 call 函数, 并执行 call 函数


int main() {    call();    return 0;}
复制代码


  • 如何往屏幕上输出内容

  • 输出内容是一个比较复杂的操作, 所以系统提前定义好了一个专门用于输出内容的函数叫做 printf 函数,我们只需要执行系统定义好的 printf 函数就可以往屏幕上输出内容

  • 但凡需要执行一个函数, 都是通过函数名称+圆括号的形式来执行

  • 如下代码的含义是: 当程序运行时系统会自动执行 main 函数, 在系统自动执行 main 函数时我们手动执行了 call 函数和 printf 函数

  • 经过对代码的观察, 我们发现两个问题

  • 并没有告诉 printf 函数,我们要往屏幕上输出什么内容

  • 找不到 printf 函数的实现代码


int call(){    return 0;}
int main(){ call(); printf(); return 0;}
复制代码


  • 如何告诉 printf 函数要输出的内容

  • 将要输出的内容编写到 printf 函数后面的圆括号中即可

  • 注意: 圆括号中编写的内容必须用双引号引起来


printf("hello world\n");
复制代码


  • 如何找到 printf 函数的实现代码

  • 由于 printf 函数是系统实现的函数, 所以想要使用 printf 函数必须在使用之前告诉系统去哪里可以找到 printf 函数的实现代码

  • #include <stdio.h> 就是告诉系统可以去 stdio 这个文件中查找 printf 函数的声明和实现


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



如何运行编写好的程序

  • 方式 1:

  • 点击小榔头将"源代码"编译成"可执行文件"

  • 找到编译后的源代码, 打开终端(CMD)运行可执行文件

  • 方式 2

  • 直接点击 Qt 开发工具运行按钮



main 函数注意点及其它写法

  • C 语言中,每条完整的语句后面都必须以分号结尾


int main(){    printf("hello world\n") // 如果没有分号编译时会报错    return 0;}
复制代码


int main(){    // 如果没有分号,多条语句合并到一行时, 系统不知道从什么地方到什么地方是一条完整语句    printf("hello world\n") return 0;}
复制代码


  • C 语言中除了注释和双引号引起来的地方以外都不能出现中文


int main(){    printf("hello world\n"); // 这里的分号如果是中文的分号就会报错    return 0;}
复制代码


  • 一个 C 语言程序只能有一个 main 函数


int main(){    return 0;}int main(){ // 编译时会报错, 重复定义    return 0;}
复制代码


  • 一个 C 语言程序不能没有 main 函数


int call(){ // 编译时报错, 因为只有call函数, 没有main函数    return 0;}
复制代码


int mian(){ // 编译时报错, 因为main函数的名称写错了,还是相当于没有main函数    return 0;}
复制代码


  • main 函数前面的 int 可以不写或者换成 void


#include <stdio.h>main(){ // 不会报错    printf("hello world\n");    return 0;}
复制代码


#include <stdio.h>void main(){  // 不会报错    printf("hello world\n");    return 0;}
复制代码


  • main 函数中的 return 0 可以不写


int main(){ // 不会报错    printf("hello world\n");}
复制代码


  • 多种写法不报错的原因

  • C 语言最早的时候只是一种规范和标准(例如 C89, C11 等)

  • 标准的推行需要各大厂商的支持和实施

  • 而在支持的实施的时候由于各大厂商利益、理解等问题,导致了实施的标准不同,发生了变化

  • Turbo C

  • Visual C(VC)

  • GNU C(GCC)

  • 所以大家才会看到不同的书上书写的格式有所不同, 有的返回 int,有的返回 void,有的甚至没有返回值

  • 所以大家只需要记住最标准的写法即可, no zuo no die


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


Tips:语法错误:编译器会直接报错逻辑错误:没有语法错误,只不过运行结果不正确




##C 语言程序练习


  • 编写一个 C 语言程序,用至少 2 种方式在屏幕上输出以下内容


   *** ***  *********   *******    ****     **
复制代码


  • 普通青年实现


printf(" *** *** \n");printf("*********\n");printf(" *******\n");printf("  ****\n");printf("   **\n");
复制代码


  • 2B 青年实现


printf(" *** *** \n*********\n *******\n  ****\n   **\n");
复制代码


  • 文艺青年实现(装逼的, 先不用理解)


int  i = 0;while (1) {    if (i % 2 == 0) {        printf(" *** *** \n");        printf("*********\n");        printf(" *******\n");        printf("  ****\n");        printf("   **\n");    }else    {        printf("\n");        printf("   ** ** \n");        printf("  *******\n");        printf("   *****\n");        printf("    **\n");    }    sleep(1);    i++;    system("cls");}
复制代码




##初学者如何避免程序出现 BUG


                          _ooOoo_                         o8888888o                         88" . "88                         (| -_- |)                          O\ = /O                      ____/`---'\____                    .   ' \\| |// `.                     / \\||| : |||// \                   / _||||| -:- |||||- \                     | | \\\ - /// | |                   | \_| ''\---/'' | |                    \ .-\__ `-` ___/-. /                 ___`. .' /--.--\ `. . __              ."" '< `.___\_<|>_/___.' >'"".             | | : `- \`.;`\ _ /`;.`/ - ` : | |               \ \ `-. \_ __\ /__ _/ .-` / /       ======`-.____`-.___\_____/___.-`____.-'======                          `=---='
............................................. 佛祖保佑 有无BUG
复制代码


━━━━━━神兽出没━━━━━━         ┏┓    ┏┓        ┏┛┻━━━━━━┛┻┓        ┃        ┃        ┃   ━    ┃        ┃ ┳┛   ┗┳ ┃        ┃        ┃        ┃   ┻    ┃        ┃          ┃        ┗━┓    ┏━┛Code is far away from bug with the animal protecting          ┃    ┃    神兽保佑,代码无bug          ┃    ┃          ┃    ┗━━━┓          ┃        ┣┓          ┃     ┏━━┛┛          ┗┓┓┏━┳┓┏┛           ┃┫┫ ┃┫┫           ┗┻┛ ┗┻┛
━━━━━━感觉萌萌哒━━━━━━
复制代码


        ´´´´´´´´██´´´´´´´        ´´´´´´´████´´´´´´        ´´´´´████████´´´´        ´´`´███▒▒▒▒███´´´´´        ´´´███▒●▒▒●▒██´´´        ´´´███▒▒▒▒▒▒██´´´´´        ´´´███▒▒▒▒██´                      项目:第一个C语言程序        ´´██████▒▒███´´´´´                 语言: C语言        ´██████▒▒▒▒███´´                   编辑器: Qt Creator         ██████▒▒▒▒▒▒███´´´´                版本控制:git-github        ´´▓▓▓▓▓▓▓▓▓▓▓▓▓▒´´                 代码风格:江哥style        ´´▒▒▒▒▓▓▓▓▓▓▓▓▓▒´´´´´                      ´.▒▒▒´´▓▓▓▓▓▓▓▓▒´´´´´                      ´.▒▒´´´´▓▓▓▓▓▓▓▒                           ..▒▒.´´´´▓▓▓▓▓▓▓▒                           ´▒▒▒▒▒▒▒▒▒▒▒▒                              ´´´´´´´´´███████´´´´´                      ´´´´´´´´████████´´´´´´´        ´´´´´´´█████████´´´´´´        ´´´´´´██████████´´´´             大部分人都在关注你飞的高不高,却没人在乎你飞的累不累,这就是现实!        ´´´´´´██████████´´´                     我从不相信梦想,我,只,相,信,自,己!        ´´´´´´´█████████´´        ´´´´´´´█████████´´´        ´´´´´´´´████████´´´´´        ________▒▒▒▒▒        _________▒▒▒▒        _________▒▒▒▒        ________▒▒_▒▒        _______▒▒__▒▒        _____ ▒▒___▒▒        _____▒▒___▒▒        ____▒▒____▒▒        ___▒▒_____▒▒        ███____ ▒▒        ████____███        █ _███_ _█_███——————————————————————————女神保佑,代码无bug——————————————————————
复制代码




##多语言对比


  • C 语言


#include<stdio.h>int main() {    printf("南哥带你装B带你飞");    return 0;}
复制代码


  • C++语言


#include<iostream>using namespace std;int main() {    cout << "南哥带你装B带你飞" << endl;    return 0;}
复制代码


  • OC 语言


#import <Foundation/Foundation.h>int main() {    NSLog(@"南哥带你装B带你飞");    return 0;}
复制代码


  • Java 语言


class Test{    public static viod main()    {        system.out.println("南哥带你装B带你飞");    }}
复制代码


  • Go 语言


package mainimport  "fmt" //引入fmt库func main() {    fmt.Println("南哥带你装B带你飞")}
复制代码


用户头像

代码情缘

关注

当你已经努力的时候,其实你可以再努力一些 2018.03.22 加入

公众号 代码情缘,专注分享硬核编程知识。

评论

发布
暂无评论
C语言从入门到精通(二)