示例
#include<stdio.h>intmain(){printf("hello world\n");return0;}这是我打出的第一个程序,也可以说每个初学者都会进行的最简单的代码,但要是只会跟着敲代码,是永远都学不会编程的,需要理解自己打的每个字都代表着什么意思。
C语言大致是分为四个步骤
源代码{(.c)文件}—预处理→编译→汇编(.s)目标文件(.o)—链接→可执行程序
首先我们需要解释一些名词才能更好的理解代码
声明
在代码里调用printf之前,编译器必须先 “认识” 它 —— 知道它存在、长什么样(返回值、参数)。这种 “提前告知存在与签名” 的东西,就叫声明。就类似于考试前登记姓名核验身份一样。(在学习的时候我一直以为声明是给“printf”赋予打印的命令或者在执行命令时告诉编译器“printf”是打印命令,在之后问了ai才知道是错的)
int printf(const char *format, ...); // 这就是一条声明 │ │ │ │ │ └── 参数:接收一个格式字符串(以及可变参数) │ └───────────── 函数名:叫 printf └────────────────── 返回值:int 这段声明传达的信息是:**" 存在一个函数叫 printf,它接收一个 `const char*` 格式串,返回 `int`。"**它没有告诉编译器 “printf 是打印用的”,更没有 “printf 是打印命令” 这种语义 ——“printf 用来打印” 是你(程序员)知道的用途,不是声明传达的信息。编译器只关心 “存在、叫什么、参数返回值是什么” 这些机械特征,好让它检查你调用得对不对。
<stdio.h>是什么
<stdio.h>是一个头文件也是函数库,里面装着很多函数的声明(包括 printf、scanf、putchar 等)。它不是 “一项声明”,而是声明们的集合。而“声明们”就是指(printf、scanf、putchar等)函数的集合。C语言库函数
#include <stdio.h>的作用
在预处理阶段,把stdio.h里的那一堆声明复制插入到#include这一行所在的位置,让编译器能看到这些声明。
声明只告诉编译器 “printf 存在、入参、返回类型”,既不说它用来打印,也不包含真正打印的指令。printf 真正打印到屏幕的代码在标准库(libc)里,由编译流程最后一步链接接入。
int函数
int是一种返回函数且返回的是整数``
intmain(){// ...做一些事...return0;// 返回 0,告诉系统"程序正常结束"}return 0;→ 返回 0,约定表示成功、正常退出- 返回其他非 0 值 → 一般表示出错(比如返回 1、-1)
- 所以在结束后会打上return 0来表示代码结束
但int本身是 C 语言里表示 “整数” 的基本数据类型,以下为返回类型函数
| 返回类型意思例子 | 意思 | 例子 |
|---|---|---|
| int | 返回整数 | int main() |
| void | 什么都不返回 | void hello() |
| double | 返回小数 | double area(double r) |
| char | 返回单个字符 | char getChar() |
main函数
主函数。 main 前⾯的 int 表⽰ main 函数执⾏结束的时候返回⼀个整型类
型的值。所以在 main 函数的最后写 return 0;
- main函数是程序的入口
- main函数有且只有一个
- 即使有多个.c文件main函数也只有一个