c语言函数

2019/8/19 C语言回顾(1)

最后都变了- 提交于 2019-11-27 22:17:06
一、冯诺依曼   将计算机分为5个部分   (1)输入设备:键盘、鼠标   (2)输出设备:显示屏   (3)存储器:     内存(运行内存)RAM:内存条     外存 ROM: 硬盘、光盘、u盘、sd卡     寄存器:在cpu内部 、提高程序的运行效率    (4)运算器    (5)控制器   注:运算器和控制器集成为cpu 二、进制转换   1、十进制 逢十进一 78 = 8*10^0 + 7*10*^1   二进制 逢2进一 1001110   八进制 逢8进1   十六进制 0,1,。。。。a,b,c,d,e,f   3位二进制数可以视为一位8进制数   4位二进制数可以视为一位十六进制数   2、 ascii码表   0 === '\0'   10 === '\n'   32 === ' '   48 === '0'   65 === 'A'   97 === 'a'   3、词法符号 关键字   c语言中一共有32个关键字: auto 声明自动变量 short 声明短整型变量或函数 int 声明整型变量或函数 long 声明长整型变量或函数 float 声明浮点型变量或函数 double 声明双精度变量或函数 char 声明字符型变量或函数 struct 声明结构体变量或函数 union 声明共用数据类型 enum 声明枚举类型 typedef

Python可变参数

萝らか妹 提交于 2019-11-27 22:05:26
很多编程语言都允许定义个数可变的参数,这样可以在调用函数时传入任意多个参数。Python 也不例外,在定义函数时也可以使用可变参数。 可变参数,又称不定长参数,即传入函数中的实际参数可以是任意多个。Python 定义可变参数,主要有以下 2 种形式。 1) 可变参数:形参前添加一个 '*' 此种形式的语法格式如下所示: *parameter 其中,parameter 表示形参名。这种形式表示接受任意多个实际参数,并将其放到一个元组中。 下面程序定义了一个形参个数可变的函数: # 定义了支持参数收集的函数 def test(a, *books) : print(books) # books被当成元组处理 for b in books : print(b) # 输出整数变量a的值 print(a) # 调用test()函数 test(5 , "C语言中文网" , "Python教程") 运行上面程序,将看到如下运行结果: ('C语言中文网', 'Python教程') C语言中文网 Python教程 5 从上面的运行结果可以看出,当调用 test() 函数时,books 参数可以传入多个字符串作为参数值。从 test() 的函数体代码来看,参数收集的本质就是一个元组: Python 会将传给 books 参数的多个值收集成一个元组。 Python

c语言学习笔记-动态内存分配

柔情痞子 提交于 2019-11-27 21:48:55
以下内容均为看郝斌老师视频和教学大纲,总结,复制粘贴而来的笔记。 动态内存分配   传统数组的缺点     1.传统数组必须事先制定,且只能是常整数,不能是变量     2.传统形式定义的数组,该数组的内存程序员无法手动释放,在一个函数的运行期间,系统为该函数中数组所分配的空间会一直存在,直到该函数运行完毕时,数组的空间才会被系统释放     3.数组的长度一旦定义,其长度就不能在更改,数组的长度不能在函数运行过程中动态的扩充或缩小     4.传统方式定义的数组不能跨函数使用 为什么需要动态分配内存   动态数组很好的解决了传统数组的这4个缺陷   传统数组也叫静态数组 分配动态内存举例 int * p=(int *)malloc(int len) 释放动态内存的方法 free(p) 静态内存和动态内存的比较     静态内存是由系统自动分配,由系统自动释放     静态内存是在栈分配的          动态内存是由程序员手动分配,手动释放     动态内存是在堆分配的 跨函数使用内存的问题     静态内存不可以跨函数使用     静态内存在函数执行期间可以被其他函数使用     静态内存在函数执行完毕之后就不能再被其它其他函数使用了     动态内存可以跨函数使用       动态内存在函数执行完毕之后仍然可以被其他函数使用 来源: https://www.cnblogs

C语言程序设计(十)

孤者浪人 提交于 2019-11-27 18:47:41
第十章 字符串 字符串常量是由一对双引号括起来的一个 字符串序列 字符串实际就是由若干个有效数字构成且以字符'\0'作为结束的一个字符序列 C语言没有提供字符串数据类型,因此字符串的存取要用 字符型数组 来实现 字符型数组是由字符构成的数组,仅当其最后一个元素是'\0'时才表示字符串 字符串结束标志'\0'也占一个字节的内存,但 它不计入字符串的实际长度,只计入数组的长度 正确写法: char str[6] = {'H','e','l','l','o','\0'}; char str[] = {'H','e','l','l','o','\0'}; char str[] = {"hello"}; char str[] = "hello"; 编译系统会根据字符串中字符的个数来确定数组的大小 数组的大小为字符串中实际字符的个数加1 多个字符串需要存放在二维字符数组中 数组第一维的长度代表要存储的字符串的个数,可以省略 但是 第二维的长度不能省略 字符指针:指向字符型数据的指针变量 只要将字符串的首地址赋值给字符指针,即可让字符指针指向一个字符串 字符串常量本身代表的就是存放它的常量存储区的首地址,是一个地址常量 char *ptr = "Hello"; 等价于 char *par; ptr = "Hello"; /* 将保存在常量存储区中的"Hello"的首地址赋值给ptr

C语言程序设计(九)

泪湿孤枕 提交于 2019-11-27 18:43:51
第九章 指针 C程序中的变量都是存储在计算机内存特定的存储单元中的,内存中的每个单元都有唯一的地址 通过 取地址运算符& 可以获得变量的地址 //L9-1 #include <stdio.h> int main() { int a = 0, b = 1; char c = 'A'; printf("a is %d, &a is %p\n", a, &a); printf("b is %d, &b is %p\n", b, &b); printf("c is %c, &c is %p\n", c, &c); return 0; } //运行结果 a is 0, &a is 0060FF0C b is 1, &b is 0060FF08 c is A, &c is 0060FF07 %p格式符,表示输出变量a、b、c的地址值 地址值是一个十六进制的无符号整数,其字长一般与主机的字长相同 变量的地址:变量在内存中所占的存储空间的首地址 变量的值:变量在存储空间中存放的数据 变量的名字:对程序中数据存储空间的一种抽象 指针:存放变量的地址的特殊类型的变量 类型关键字 *指针变量名; 类型关键字代表指针变量要指向的变量的数据类型,即 指针变量的基类型 指针变量的定义只是声明了指针变量的名字及其所能指向的数据类型,并没有说明指针变量究竟指向了哪里 //L9-2 #include <stdio

C语言程序设计(八)

安稳与你 提交于 2019-11-27 18:40:28
第八章 数组 //L8-1 #include <stdio.h> int main() { int score1, score2, score3, score4, score5; int totalScore; printf("Input the scores of ten students:\n"); scanf("%d", &score1); scanf("%d", &score2); scanf("%d", &score3); scanf("%d", &score4); scanf("%d", &score5); totalScore = score1 + score2 + score3 +score4 + score5; printf("The average score is %f\n", totalScore/5.0); return 0; } //运行结果 Input the scores of ten students: 90 95 91 86 79 The average score is 88.200000 数组:解决需要对相同类型的批量数据进行处理的问题 数组是一组具有相同类型的变量的集合 数组名 数组元素:构成数组的每个数据项 数组的下标 数组的基类型:即数组中元素的类型 数组的维数:下标的个数 C语言中数组的下标都是 从0开始 的 //L8-1

C语言程序设计(七)

我们两清 提交于 2019-11-27 18:36:28
第七章 函数 分而治之: 把较大的任务分解成若干较小、较简单的任务,并提炼出公用任务的方法 函数是C语言中模块化程序设计的最小单位,既可以把每个函数都看作一个模块,也可以将若干相关的函数合并成一个模块 信息隐藏: 把函数内部的信息对不需要这些信息的其他模块隐藏起来,让使用者不必关注函数内部是如何做的 只知道它能做什么以及如何使用它即可,从而使得整个程序的结构更加紧凑,逻辑也更清晰 标准库函数:使用ANSIC的库函数,必须在程序的开头将该函数所在的头文件包含进来 自定义函数 函数在使用之前必须定义 函数名是函数的唯一标识,用于说明函数的功能 为了便于区分,通常变量名用小写字母开头的单词组合而成,函数名则用大写字母开头的单词组合而成 Windows风格: 函数名使用“动词”或者“动词+名词”的形式 变量名使用“名词”或者“形容词+名词”的形式 函数体必须用一对花括号{}包围,这里的花括号是函数体的界定符 在函数内部定义的变量只能在函数体内访问,称为 内部变量 函数头部参数表里的变量,称为形式参数,也是内部变量 形参表是函数的入口 函数名相当于运算的规则,形参表里的形参相当于运算的操作数,函数的返回值就是运算的结果 若函数没有返回值,则需用void定义返回值的类型 若函数不需要入口参数,则用void代替函数头文件形参表中的内容 在函数定义的前面写上一段注释来描述函数的功能及其形参

C语言中字符串常用函数--strcat,strcpy

别来无恙 提交于 2019-11-27 16:32:01
strcpy 原型声明:extern char *strcpy(char* dest, const char *src); 头文件:#include < string.h > 功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的 地址空间 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的 指针 。 函数实现: /**********************  * C语言标准库函数strcpy的一种典型的工业级的最简实现  * 返回值:目标串的地址。  * 对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返回值,通常为NULL。  * 参数:  * strDestination 目标串  * strSource 源串  ***********************/   char * strcpy ( char *strDestination, const char *strSource)  {   assert(strDestination!= NULL && strSource!= NULL);   char *strD=strDestination;   while ((*strD++=*strSource++)!= '\0');   return strDestination

c语言和c++的交换函数

只谈情不闲聊 提交于 2019-11-27 15:47:14
1 #include<iostream> 2 using namespace std; 3 namespace LiuGang{//在命名空间中写函数 4 void swap(int&aa,int&bb)//两个数的交换 利用c++中的应用 和变量进行绑定 不占用内存 但是绑定变量不可更改 5 { 6 int c=aa; 7 aa=bb; 8 bb=c; 9 } 10 } 11 void swap(int* a,int* b);//C语言的交换利用指针和地址进行交换定义时不需要赋值 绑定后随时可以更改 12 int main() 13 { 14 int a=3,b=5; 15 swap(&a,&b); 16 LiuGang::swap(a,b);//调用命名空间的函数 17 cout<<"a="<<a<<endl<<"b="<<b<<endl; 18 cin.get(); 19 return 0; 20 } 21 void swap(int* a,int* b){ 22 int c=*a; 23 *a=*b; 24 *b=c; 25 } 来源: https://www.cnblogs.com/liugangjiayou/p/11368993.html

C语言中read()与write()函数总结

南笙酒味 提交于 2019-11-27 12:13:23
1.都位于<unistd.h>中 read()函数 原型:ssize_t read(int fd,void*buf,size_t count) 参数说明: fd: 是文件描述符,对应0 buf: 为读出数据的缓冲区; count: 为每次读取的字节数(是请求读取的字节数,读上来的数据保 存在缓冲区buf中,同时文件的当前读写位置向后移) int num; read(0,&num,4); write()函数 原型:ssize_t write(int fd,void*buf,size_t count) 参数说明: fd: 是文件描述符,对应1 buf: 需要写入的数据,通常为字符串; count: 每次写入的字节数 char* ch = "hello world\n"; int len = strlen(ch); write(1,ch,len); 来源: https://blog.csdn.net/KiWi_VC/article/details/99671902