c语言初步认识

计算机初步

计算机中央处理单元(CPU)

随机存取单位(RAM)是存储程序和文件的工作区;永久内存存储设备(固态硬盘) 

冯诺伊曼早起关于存储程序原理,计算5大基本组件

cpu工作流程

读取指令----分析指令------执行指令

CPU由若干的寄存器组成。计算机以ASCII码值存储数字和字符。所以这些寄存器写的都是数字。

例如:我执行2个数相加程序

读取第一个数字,将其写入寄存器1,(从内存xxx位置上拷贝第一个数字到寄存器1)

读取第二个数字,将其写入寄存器2,(从内存xxx位置上拷贝第二个数字到寄存器2)

把两个寄存器的内容相加写入寄存器1,并将其拷贝到内存xxx位置上。

C语言

C语言是编译型语言,是文本文件,本身无法执行。

需要经过经过编译器翻译和链接器链接,生成二进制可执行文件

后缀为.c文件被称为源文件 .obj文件被称为目标文件

每个后缀为.c的文件都能单独被编译。.c文件可以包含除main函数之外的c函数

集成开发环境一般包括编译器和链接器两部分,还有常见的标准库。实行了.c文件到执行的全过程流程

一条C语言语句可以被转换成多条二进制机器指令,注释的语句会被忽略

程序设计步骤

确定数据结构----确定算法----编码调试----整理文档

代码

main函数

//顶部会有诸多头文件声明
#include <stdio.h>//将stdio头文件的内容粘贴到此处
//在编写程序时调用函数必须要用,#include 进行预处理
int main ()//int表示返回类型为整型;main被称为主函数,main()表示有一个main函数。()里面可以放参数,一般是无参数的。
{          //{}是函数体
           //开始的时候在这里写代码
int m=1;//声明一个整型变量,并把=右边的值赋给m
//int 是C语言一种数据类型。
printf("%d",m);//使用一个printf()函数,在屏幕上打印信息(m的值)
//这个printf函数放在main函数里,函数实际参数来源于main函数
return 0;  //return 0;表示正常返回。
           //int与return一一对应
}
//这段代码意思是main函数执行完会返回一个整型值{返回0(整型)}

注意事项

  1. main函数是程序的入口,不管代码多少行,main函数仅有一个。程序执行首先从main函数开始执行。
  2. 如果有多个.c源文件,但这些源文件仅能有一个main函数(程序的入口有且仅有一个)
  3. 常见编写代码的错误
  • main函数写成mian
  • 中英文标点 ; "" /括号 (){}
  • 一句话结束一般有分号;(用英文)

4.main函数还可以写成 int main(void){(void)(表示无参数的意思)}

5.注释快捷键方法

  • Ctrl+K+C//注释
  • Ctrl+K+U//取消注释

printf和库函数

printf

表示在标准输出设备(屏幕)上打印信息,即print 打印和format格式。意思是按照指定的格式(f)来打印(print)

%c%d表示占位符,会被“,”后面的信息替换。

注:在printf中含有注释性符号会被当成字符,原因:" "构成字符串,如果掺杂非指定格式(format)字符,就直接打印字符串内容

库函数

将常见的函数组成标准库。标准库中的函数,被称为库函数

将一些用相同功能库函数声明放在一个.h头文件中,如果要使用这些库函数就必须要包含这些头文件。

例:printf库函数在stdio.h的头文件中,我们在使用printf打印信息时,需要在.c源文件中声明这个头文件,即#include

#include表示预处理指令

头文件stdio.h(std standard 标准,i input输入,o putput,输出。综合就是标准输入输出头文件){这个头文件里的库函数可以将键盘输入和屏幕输出联系在一起}

常见的库函数包括其使用方法、参数、返回值的官网C library - C++ Reference

函数

一般写函数时,返回类型(无返回类型也要写) +函数名+(){}

  • C程序中主函数(main)不能被其他函数调用。
  • main函数可以放在程序开始,也可以放在中间。也可以放在最后,位置不固定,但程序执行时必须从main函数开始
  • 在C程序的函数中不能定义另一个函数。可以声明或调用另一个函数
  • 每个C程序中必须包含一个main函数,但不一定是每个C程序文件中必须有,用户单独编写的某个函数也可以存储为一个C程序文件

参数

  • 实际参数,传递给函数的特定值
  • 形式参数,函数用于储存值的变量

标识符

是变量、函数、其他实体的名称。(也可以称为变量名、函数名、其他实体名)例如声明一个整型变量,他的标识符记为m。则可以写成int m;

单元或块

花括号将多条语句结合一起构成一个单元或者块

例如main函数的{}里面构成单元或者块

声明

声明是提前为变量、函数、其他实体预留空间位置

在c99之前,变量必须在使用之前就已经声明好了。但c99标准,声明的位置可以放在单元或者块的任意地方。

声明变量名越完整优点

  • 方便阅读,提高可读性
  • 方便查找错误
  • 易于通过编译

初始化数据类型值

在执行赋值表达式语句时,将值写入已经声明好的位置里

例如:int num;表明已经划分好一个空间给整型数据num,由于其未初始化,所以他是变量。

关键字

定义:具有特殊意义、特定的使用方法,专门保留给C语言使用。

注:1.程序员在自己创造变量、标识符时,不能与关键字重合。

2.关键字也不能自己创造,必须使用给定好的

例如前面代码所写的int就是一个关键字,不能随便使用。

常见关键字使用方法C 关键词 - cppreference.com

以下是C语言常见的32个关键字

字符和ASCII码表

int main()
{
    printf("%d",'A');
    printf("%d",'A'+32);
 return 0;   
}

ASCII官网ASCII 码表 - cppreference.com

ASCII码表如下:

字符' ',字符串是用" ",打印时用%s

字符串默认后面有一个\0,例如"abc",存放a、b、c、\0,4个值

\0是字符串结束的标志。

转义字符----转变原来字符的意义

• \n,表示转变原来的意思,开辟新的一行(nem chracter). 转变成换行的意思

C语⾔中像这样的转义字符还有⼀些,具体如下:

• \? :在书写连续多个问号时使⽤,防⽌他们被解析成三字⺟词,在新的编译器上没法验证了。

• \' :⽤于表⽰字符常量'

• \" :⽤于表⽰⼀个字符串内部的双引号

• \\ :⽤于表⽰⼀个反斜杠,防⽌它被解释为⼀个转义序列符。

• \a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发⽣。

• \b :退格键,光标回退⼀个字符,但不删除字符。

int main()
{
 
    printf("abcdefgh\b");//bcdefgh
 
    return 0;
}

• \f :换⻚符,光标移到下⼀⻚。在现代系统上,这已经反映不出来了,⾏为改成类似于 \v 。

• \n :换⾏符。

• \r :回⻋符,光标移到同⼀⾏的开头。

int main()
{
 
    printf("abcdefgh\r");//bcdefgh
 
    return 0;
}

int main()
{
 
    printf("abcdefgh\r  ");//bcdefgh
 
    return 0;
}

• \t :制表符,光标移到下⼀个⽔平制表位,通常是下⼀个8的倍数。

• \v :垂直分隔符,光标移到下⼀个垂直制表位,通常是下⼀⾏的同⼀列。

下⾯2种转义字符可以理解为:字符的8进制或者16进制表⽰形式

• \0dd :d d d表⽰1~3个⼋进制的数字。 如: \130 表⽰十进制的88,在ASCII码表(ASCII 码表 - C++中文 - API参考文档 (apiref.com))中对应字符X

• \xdd :d d表⽰2个⼗六进制数字。 如: \x30 表⽰字符0

\0 :null 字符,代表没有内容, \0 就是 \ddd 这类转义字符的⼀种,⽤于字符串的结束标志,其

ASCII码值是0.

代码演⽰:

#include <stdio.h>
int main()
{
 
 printf("%c\n", '\''
);
 printf("%s\n", "\"");
 printf("c:\\test\\code\\test.c\n");
 printf("\a");
 printf("%c\n", '\130'); //130是8进制,转换成10进制是88,以88作为ASCII码值的字符是
 printf("%c\n", '\x30'); //x30中的30是16进制,转换成10进制是48,以48作为ASCII码值的
 
 return 0;
}

这些ASCII码值是可以⾃⼰写代码验证的,⼤家也可以⾃⼰验证。

关于转义字符我们⾸先要了解,然后要能在字符串中识别出来。

转义字符参考:转义序列 - cppreference.com

提高代码的可读性

  • 书写有意义的变量名
  • 写注释
  • 用空行分隔开概念上不同的部分
  • 每条语句独占一行,多使用空行,提高代码的可读性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值