Hello world

  • 这个世界上, 几乎所有程序员入门的第一段代码都是Hello World.
  • 原因是当年C语言的作者Dennis Ritchie(丹尼斯 里奇)在他的名著中第一次引入, 传为后世经典, 其它语言亦争相效仿, 以示敬意

如何创建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_o8888888o88" . "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 main
import  "fmt" //引入fmt库
func main() {fmt.Println("南哥带你装B带你飞")
}

配套视频地址

江哥带你玩转C语言 02- 创建第一个C语言程序相关推荐

  1. 老宇哥带你玩转ESP32:02使用VSCode+PlatformIO搭建开发环境

    上一篇文章给大家介绍了ESP32使用Arduino官方IDE进行开发的流程. 老宇哥带你玩转ESP32:01入门介绍 (点击阅读) 有部分同学反馈下载的时候特别慢,这个库是托管在GitHub的,国内有 ...

  2. 江哥带你玩转C语言| 12 -二维数组和字符串

    二维数组 所谓二维数组就是一个一维数组的每个元素又被声明为一 维数组,从而构成二维数组. 可以说二维数组是特殊的一维数组. 示例: int a[2][3] = { {80,75,92}, {61,65 ...

  3. 江哥带你玩转C语言 | 11- C语言排序算法

    计数排序(Counting Sort) 计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出.它的优势在于在对一定范围内的整数排序时,快于任何比较排序算法. ...

  4. 江哥带你玩转C语言 | 04-C语言常量和变量

    什么是数据? 生活中无时无刻都在跟数据打交道 例如:人的体重.身高.收入.性别等数据等 在我们使用计算机的过程中,也会接触到各种各样的数据 例如: 文档数据.图片数据.视频数据等 数据分类 静态的数据 ...

  5. 江哥带你玩转C语言 | 03-C语言关键字和标识符

    什么是注释? 注释是在所有计算机语言中都非常重要的一个概念,从字面上看,就是注解.解释的意思 注释可以用来解释某一段程序或者某一行代码是什么意思,方便程序员之间的交流沟通 注释可以是任何文字,也就是说 ...

  6. 江哥带你玩转C语言 | 17-文件操作

    文件基本概念 文件流: C 语言把文件看作是一个字符的序列,即文件是由一个一个字符组成的字符流,因此 c 语言将文件也称之为文件流. 文件分类 文本文件 以 ASCII 码格式存放,一个字节存放一个字 ...

  7. 江哥带你玩转C语言 - 16-内存管理和链表

    内存管理 进程空间 程序,是经源码编译后的可执行文件,可执行文件可以多次被执行,比如我们可以多次打开 office. 而进程,是程序加载到内存后开始执行,至执行结束,这样一段时间概念,多次打开的wps ...

  8. 江哥带你玩转C语言 | 09 - C语言进制和位运算

    进制基本概念 什么是进制? 进制是一种计数的方式,数值的表示形式 常见的进制 十进制.二进制.八进制.十六进制 进制书写的格式和规律 十进制 0.1.2.3.4.5.6.7.8.9 逢十进一 二进制 ...

  9. 江哥带你玩转C语言 | 13- 一级指针和多级指针

    指针基本概念 什么是地址 生活中的地址: 内存地址: 地址与内存单元中的数据是两个完全不同的概念 地址如同房间编号, 根据这个编号我们可以找到对应的房间 内存单元如同房间, 房间是专门用于存储数据的 ...

最新文章

  1. 【Ubuntu】ubuntu工具 记录shell终端的内容到文件中:script
  2. ElasticSearch Groovy脚本远程代码执行漏洞
  3. 13个月才跑通GitHub模型,机器学习科研入门太难了吧
  4. scrollview的一些代理方法
  5. Python进阶:对象复制与比较,分深浅,见真假
  6. C# 读取指定目录中的所有文件,并按规则生成SQL语句!
  7. Oracle数据库-主键(primary key)、外键(foreign key)、候选键(candidate key)、超键(super key)和references总结...
  8. [转载] 晓说——第9期:多如牛毛严酷无比的美国那些法
  9. grails安装部署_grails中文版
  10. Asp.Net服务器控件开发的Grid实现(三)列编辑器
  11. (91)FPGA时钟分频与倍频问题,面试必问(十五)(第19天)
  12. 《JQuery 能干点啥~》第四讲 html() 与 text()的赋值比较
  13. [数字信号处理学习篇] FIR 滤波器基础(一)
  14. Mybatis事务管理的两种方式
  15. 假期无聊,我用傅里叶变换做了一个频率计,吉他定调口哨定音,样样好使!
  16. 面向初学者的 40 多个 Python 项目——开始编写 Python 代码的简单想法
  17. Linux重定向console口控制台,Linux重定向console口控制台(Fedora)
  18. C/C++基础题029.DDD
  19. html给div加圆角边框,border-radius是向元素添加圆角边框的方法
  20. 曾善美一女大学生的创业之路

热门文章

  1. linux进程被信号杀死,linux杀死进程以及发送或响应信号
  2. (转)8000字干货:那些很厉害的人是怎么构建知识体系的
  3. 协同管理软件方面的一些文章
  4. 天猫店铺抽取的红包在哪里领取看,关于淘宝购物分享优惠商品的群
  5. EBS库存(INV)模块常用表
  6. ABAP FB01 BAPI过账
  7. Love ya 三三小说 炫舞爱情 ⑦
  8. win10玩cf不能全屏_CF如何调全屏
  9. idea与windows输入法热键冲突解决方法
  10. 修复Ubuntu下驱动错误