从零开始学C语言
程序员文章站
2022-06-06 17:26:13
Run for dreams, to be a shining self! (unfinished) ......
从零开始学c语言
@阆苑祁寒
day1
1 #include <stdio.h> 2 int main(void) 3 { 4 printf("hello, world! /n"); 5 return 0; 6 }
基本语法解释:
- stdio 系统文件库,除stdio有诸多类型的库函数,stdio中最常用的是printf()函数。
- .h 头文件
- #include 预处理器导入头文件,可python的inform和latex的\usepackage是一个道理.
- <> c标准库,写成""表示自定义的库,常见的有标准数据传输库<stdio.h>和数学库<math.h>,具体参考相关附录.
- int 返回一个整数,表示整型数据结构,还有其他种类的数据结构,如浮点float等,具体参考相关附录.
- main 所有c文件有且只有一个主函数(入口函数),在c++中main()表示不需要参数,在c中main(void)表示不需要参数(当然前一种情况也可以运行),注意没有void main这种说法,int main(int argc, char *argv[])表示需要参数,argc为给程序的参数的个数,argv中保存的是给函数的参数,都是字符串。
- printf() 输出到屏幕,必须调用头文件<stdio.h>,是标准数据传输库下两个最重要的函数(另外一个是scanf,格式与printf类似,只是参量表前需要加地址符&),其调用格式是 printf("<格式化字符串>", <参量表>); ,库函数的声明是 int printf(const char *format, ...) ,其中字符串format包含了要被写入到标准输出 stdout 的文本,可以包含嵌入的 format 标签,其标签属性是 %[name][flags][width][.precision][length]specifier ,可被随后的附加参数中指定的值替换,并按需求进行格式化。注意每一个printf()可以有多个format标签,写成 %[name]%[name] 格式,中间无需逗号。(注:scanf函数可以识别的数据类型是 [number] [number] 和 [number]\n[number] ,中间如果是逗号则不能识别。)更多内容参考相关附录。下表摘录自附录。
name | 意义 |
---|---|
d | 以十进制形式输出带符号整数(正数不输出符号) |
o | 以八进制形式输出无符号整数(不输出前缀0) |
x,x | 以十六进制形式输出无符号整数(不输出前缀ox) |
u | 以十进制形式输出无符号整数 |
f | 以小数形式输出单、双精度实数 |
e,e | 以指数形式输出单、双精度实数 |
g,g | 以%f或%e中较短的输出宽度输出单、双精度实数 |
c | 输出单个字符 |
s | 输出字符串 |
p | 输出指针地址 |
lu | 32位无符号整数 |
llu |
64位无符号整数 |
flags | 意义 |
---|---|
- | 在给定的字段宽度内左对齐,默认是右对齐(参见 width 子说明符)。 |
+ | 强制在结果之前显示加号或减号(+ 或 -),即正数前面会显示 + 号。默认情况下,只有负数前面会显示一个 - 号。 |
空格 | 如果没有写入任何符号,则在该值前面插入一个空格。 |
# | 与 o、x 或 x 说明符一起使用时,非零值前面会分别显示 0、0x 或 0x。 与 e、e 和 f 一起使用时,会强制输出包含一个小数点,即使后边没有数字时也会显示小数点。默认情况下,如果后边没有数字时候,不会显示显示小数点。 与 g 或 g 一起使用时,结果与使用 e 或 e 时相同,但是尾部的零不会被移除。 |
0 | 在指定填充 padding 的数字左边放置零(0),而不是空格(参见 width 子说明符)。 |
width | 意义 |
---|---|
(number) | 要输出的字符的最小数目。如果输出的值短于该数,结果会用空格填充。如果输出的值长于该数,结果不会被截断。 |
* | 宽度在 format 字符串中未指定,但是会作为附加整数值参数放置于要被格式化的参数之前。 |
.precision | 意义 |
---|---|
.number | 对于整数说明符(d、i、o、u、x、x):precision 指定了要写入的数字的最小位数。如果写入的值短于该数,结果会用前导零来填充。如果写入的值长于该数,结果不会被截断。精度为 0 意味着不写入任何字符。 对于 e、e 和 f 说明符:要在小数点后输出的小数位数。 对于 g 和 g 说明符:要输出的最大有效位数。 对于 s: 要输出的最大字符数。默认情况下,所有字符都会被输出,直到遇到末尾的空字符。 对于 c 类型:没有任何影响。 当未指定任何精度时,默认为 1。如果指定时不带有一个显式值,则假定为 0。 |
.* | 精度在 format 字符串中未指定,但是会作为附加整数值参数放置于要被格式化的参数之前。 |
length | 意义 |
---|---|
h | 参数被解释为短整型或无符号短整型(仅适用于整数说明符:i、d、o、u、x 和 x)。 |
l | 参数被解释为长整型或无符号长整型,适用于整数说明符(i、d、o、u、x 和 x)及说明符 c(表示一个宽字符)和 s(表示宽字符字符串)。 |
l | 参数被解释为长双精度型(仅适用于浮点数说明符:e、e、f、g 和 g)。 |
- return 0 参量为空时结束循环(为了使代码严谨,必须要加)。return表示返回一个函数的值,在c中没有真假值一说,与python不同,即没有return false和return ture。
- /n 在c语言中的转义字符,借助简单符号表达一些功能。下表摘录自附录。
- c标识符 区分大小写,不允许出现标点字符(如 @、$ 和%),通常由字母、下划线和数字组成。
- c注释 单行可以用\\注释,多行可以用\*和*\注释,后者更为规范,其本质是预编译时以一个空格代之(搜索\*和*\,也是不能嵌套的原因)。
- ; c语句结束语。
- c关键字 不能作为常量名、变量名或其他标识符名称。下表摘录自附录。
auto | 声明自动变量 |
break | 跳出当前循环 |
case | 开关语句分支 |
char | 声明字符型变量或函数返回值类型 |
const | 声明只读变量 |
continue | 结束当前循环,开始下一轮循环 |
default | 开关语句中的"其它"分支 |
do | 循环语句的循环体 |
double | 声明双精度浮点型变量或函数返回值类型 |
else | 条件语句否定分支(与 if 连用) |
enum | 声明枚举类型 |
extern | 声明变量或函数是在其它文件或本文件的其他位置定义 |
float | 声明浮点型变量或函数返回值类型 |
for | 一种循环语句 |
goto | 无条件跳转语句 |
if | 条件语句 |
int | 声明整型变量或函数 |
long | 声明长整型变量或函数返回值类型 |
register | 声明寄存器变量 |
return | 子程序返回语句(可以带参数,也可不带参数) |
short | 声明短整型变量或函数 |
signed | 声明有符号类型变量或函数 |
sizeof | 计算数据类型或变量长度(即所占字节数) |
static | 声明静态变量 |
struct | 声明结构体类型 |
switch | 用于开关语句 |
typedef | 用以给数据类型取别名 |
unsigned | 声明无符号类型变量或函数(正数) |
union | 声明共用体类型 |
void | 声明函数无返回值或无参数,声明无类型指针 |
volatile | 说明变量在程序执行中可被隐含地改变 |
while | 循环语句的循环条件 |
- 空格 描述空白符、制表符、换行符和注释,空格分隔语句的各个部分,让编译器能识别语句中的某个元素(如int)在哪里结束,下一个元素在哪里开始。
- 除主函数main之外的其他函数,需要命名为除main之外的名字以便识别,常见写法为“函数名(需要返回的数据类型和参量)”(c99之后的存储类型没有必要写出),这里的参量与函数内局部声明的参量不同(需要返回!),这也是当参量为空时写return 0的原因。
更多基础内容期待补充,非常感谢。c语言的第一课与其说是认识c语言,不如说是认识最基本的语句helloword里的所有语法及其附录!
day2
程序的灵魂是算法,算法的核心是逻辑,语言只是表达给机器的工具(尤其是c,既面向机器,又面向用户)。不同于其他语言,c面向过程,只能实现函数与函数的互相调用,而不能嵌套,其逻辑本质可以平延到高级语言对包的调用。c中最常见的语句列表如下。
常用语句解释:
上一篇: php 判断变量为空详解介绍_PHP教程
下一篇: webpy 中字符转换错误