欢迎光临散文网 会员登陆 & 注册

速写C语言3

2023-02-27 11:31 作者:无情小贱客  | 我要投稿

主要内容:

函数

数组

指针

对文件的操作

乱七八糟的知识

不建议看下去。。。写的乱七八糟

1.函数

什么是函数呢?

函数就是一段封装好的,可以重复使用的代码,它使得我们的程序更加模块化,不需要编写大量重复的代码。

被调用函数

当返回值是void类型时可以不用return语句

return语句可以有多条。只不过函数运行的时候,最后只会执行其中的一条。

函数有返回值,那么函数就要返回其声明类型的值,所以应该有return语句返回相应的值,否则编译出差。

形参(形式参数)

在函数定义中出现的参数可以看做是一个占位符,它没有数据,只能等到函数被调用时接收传递进来的数据,所以称为形式参数,简称形参

实参(实际参数)

函数被调用时给出的参数包含了实实在在的数据,会被函数内部的代码使用,所以称为实际参数,简称实参

形参和实参的功能是传递数据,发生函数调用时,实参的值会传递给形参。

PS:写不下去了。。。

参考链接:https://www.runoob.com/cprogramming/c-functions.html

2.数组

http://c.biancheng.net/view/1829.html

定义数组

类型 变量名称 [元素数量];

元素数量必须是整数,具有相同的类型


一旦创建,不能改变大小

数组中的元素在内存中是连续依次排列的

(数组是一个整体,它的内存是连续的;也就是说,数组元素之间是相互挨着的,彼此之间没有一点点缝隙。)

数组的每个单元就是数组类型的一个变量

使用数组时放在[]中的数字叫做下标或索引,下标从0开始计数:

grades[0]

最大的下标就是,数组的大小-1。

长度为0的数组, int a[0];  可以存在但是没有用。


数组的集成初始化

int [] = {1,2,3,4,5};

int [12] = {2};

后面不写的话,就是初始化为0。

int a[12] = {[1] =2,4,[5]=6};


数组的大小

sizeof()   单位是字节

得出数组的单元个数。

!!!

%-9d中 width 对应 9。

对于整数和小数,默认右对齐,不足的宽度以空格补齐,例如:

printf("%10d%12f", 234, 9.8);

输出结果为:

234    9.800000

234 前面共有7个空格,9.8 前面有4个空格。


数组的赋值

数组变量本身不能被赋值,要把一个数组的所有元素交给另一个数组,必须采用遍历。



一维数组

int [12] = {2};


sqrt()

sqrt() 用来求给定值的平方根


二维数组

a[0][0]就是1,通俗点话就是说袋子里面装着三个东西,但是这个袋子是从0开始的。

用来存放字符的数组称为字符数组

char a[10];  //一维字符数组 char b[5][10];  //二维字符数组

char c[20]={'c', '  ', 'p', 'r', 'o', 'g', 'r', 'a','m'};  // 给部分数组元素赋值

char d[]={'c', ' ', 'p', 'r', 'o', 'g', 'r', 'a', 'm' };  //对全体元素赋值时可以省去长度

字符数组实际上是一系列字符的集合,也就是字符串(String)。在C语言中,没有专门的字符串变量,没有string类型,通常就用一个字符数组来存放一个字符串。

char str[30] = {"c.biancheng.net"};

char str[30] = "c.biancheng.net";  

数组第 0 个元素为'c',第 1 个元素为'.',第 2 个元素为'b',后面的元素以此类推。

为了方便,你也可以不指定数组长度

char str[] = {"c.biancheng.net"};

char str[] = "c.biancheng.net";

字符不需要想着'\0'

字符串需要想着最后需要加上'\0'

字符数组的长度至少要比字符串的长度大 1。

字符串输入输出

puts()

输入字符串

  • puts():输出字符串并自动换行,该函数只能输出字符串

  • printf():通过格式控制符%s输出字符串,不能自动换行。除了字符串,printf() 还能输出其他类型的数据。

gets()

得到字符串

  • scanf():通过格式控制符%s输入字符串。除了字符串,scanf() 还能输入其他类型的数据。

  • gets():直接输入字符串,并且只能输入字符串。

scanf() 和 gets() 是有区别的:

  • scanf() 读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串。

  • gets() 认为空格也是字符串的一部分,只有遇到回车键时才认为字符串输入结束,所以,不管输入了多少个空格,只要不按下回车键,对 gets() 来说就是一个完整的字符串。换句话说,gets() 用来读取一整行字符串。


注意,scanf() 在读取数据时需要的是数据的地址,这一点是恒定不变的,所以对于 int、char、float 等类型的变量都要在前边添加&以获取它们的地址。但是在本段代码中,我们只给出了字符串的名字,却没有在前边添加&,这是为什么呢?因为字符串名字或者数组名字在使用的过程中一般都会转换为地址,所以再添加&就是多此一举,甚至会导致错误了。

scanf()    如果是字符的话就不需要&符号加上

http://c.biancheng.net/view/1833.html

http://c.biancheng.net/view/1834.html

参考链接:http://c.biancheng.net/view/1828.html

3.指针

指针值只能是地址或者空,0表示空。

%p   十六进制     &i   以地址返回给你

相邻数组之间的差距是4

scanf("%d",&i);

运算符&

获取变量的地址,它的操作数必须是变量

不能是表达式。

数组 相邻的差距是4

%x

无符号十六进制整数

\xhh     十六进制值

%p   指针

4.对文件的操作

1.格式化的输入输出

printf()    

%

%9.2f   合起来有9个字符,小数点后面两位

修饰字符

%    

putchar()

字符

scanf()

%i

getchar()

字符    得到你输入的字符

2.文件

w 打开只写。如果不存在则新建,如果存在则清空

a 打开追加。如果不存在则新建,如果存在则从文件尾开始

x 只新建,如果存在则不能打开

操作文件的正确流程为:打开文件 --> 读写文件 --> 关闭文件。文件在进行读写操作之前要先打开,使用完毕要关闭。

FILE *fopen(char *filename, char *mode);

filename为文件名(包括文件路径),mode为打开方式,它们都是字符串。

FILE *fp = fopen("demo.txt", "r");

表示以“只读”方式打开当前目录下的 demo.txt 文件,并使 fp 指向该文件,这样就可以通过 fp 来操作 demo.txt 了。fp 通常被称为文件指针

FILE *fp = fopen("D:\\demo.txt","rb+");

表示以二进制方式打开 D 盘下的 demo.txt 文件,允许读和写。

整体来说,文件打开方式由 r、w、a、t、b、+ 六个字符拼成,各字符的含义是:

  • r(read):读

  • w(write):写

  • a(append):追加

  • t(text):文本文件

  • b(binary):二进制文件

  • +:读和写

字符读取函数 fgetc

int fgetc (FILE *fp);

fp 为文件指针。fgetc() 读取成功时返回读取到的字符,读取到文件末尾或读取失败时返回EOF


EOF 是 end of file 的缩写,表示文件末尾,是在 stdio.h 中定义的宏,它的值是一个负数,往往是 -1。fgetc() 的返回值类型之所以为 int,就是为了容纳这个负数(char不能是负数)。


字符写入函数 fputc

fputc 是 file output char 的所以,意思是向指定的文件中写入一个字符。fputc() 的用法为:int fputc ( int ch, FILE *fp );


PS:不想写下去,就到这里吧。。。还要回去看指针是什么玩意呢。

乱七八糟的知识


变量名的命名规则:

1.不能以数字开头,不能使用关键字命名

2.由数字,英文,下划线(_)组成


% 取余数  都需要是整数

/ 整数除于整数的结果是整数  整除

++a 在用之前+1

a++ 是用完a在加+1

逻辑运算符

&&  and   与

两个雪人在一起,,,与

&& 如果两个操作数均为true(非零),则条件为真(取1);

|| or         或    

两个人,男人或者女人,两根筷子

|| 如果两个操作数中有其中任意一个非零,则条件为真。

!    not   非

!用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。

C 作用域规则


全局变量是定义在函数外部,通常是在程序的顶部。全局变量在整个程序生命周期内都是有效的,在任意的函数内部能访问全局变量。

全局变量可以被任何函数访问。也就是说,全局变量在声明后整个程序中都是可用的。

在程序中,局部变量和全局变量的名称可以相同,但是在函数内,如果两个名字相同,会使用局部变量值,全局变量不会被使用。

就近为原则,我理解


速写C语言3的评论 (共 条)

分享到微博请遵守国家法律