函数和数组(C语言)

函数

在函数的声明中,形参的名字可以省略

函数的定义是一种特殊的声明

数组在传参的时候,形参的数组和实参的数组是同一个数组

函数在设计的时候,尽量功能单一

形参和实参的名字是可以一样的

数组在传参的时候,实参就写数组名就行,形式也是数组的形式

如果函数要求返回值,但是函数中没有使用return返回值,那具体返回什么就不确定了

其实编译器在编译代码的时候,就为静态变量分配了地址,而不是进入函数创建这种变量

自定义函数返回类型不是void时,自定义函数后面一定要加return…!!(是void的话,return后面要无内容或者不写return;)

函数定义里面的形式参数表不可以写为(intx,y)

函数执行到return语句中止

函数声明时形式参数表的比如:x,y可以删去

写为比如 int add(int , int)(即 函数定义时,形参变量名可以省略,形参类型不可以省略)

函数定义时不可省

实参类型要跟对应形参类型最好一致(自己是要一定一致,不然会出现错误结果)

自定义函数有比如 return a;

也可以在main函数里调用为add(x,y);(但此时不会返回a,因为还没有东西被a赋值)

函数声明时,形参变量名和函数定义时不一样也行,但是形参的类型要一致(参数类型的位置也要一致)

void类型自定义函数如果没有return语句,则执行到函数体结束的右大括号;
如果有return,那么到return语句处就返回调用处

主调函数如果不需要返回值,就不用临时变量来做中间传递

自定义函数没有参数时,可以在定义和声明时,()里面一会有void,一会没有、

自定义函数实参两个类型不一样时也可以做加减啥的

函数定义里面可以用全局变量(但如果局部变量与全局变量名重合,则用的是局部变量的数据)

传值调用时:当实参传递给形参时,形参是实参的一份临时拷贝,对形参的修改不会影响实参

传址调用则不同

区分传值调用和传址调用

实参的名字和形参的名字是可以相同的

自定义函数时,自己喜欢在后面加个own(比如:printf_own)

没有加特殊东西时,自定义函数里不能使用main函数里面的局部变量,但是可以使用全局变量

在C语言中,形参不可以是int arr 因为没有[]

自定义函数形参和实参的类型要一样

数组的形参不可以写为eg:int arr

void**和void在作自定义函数开头时,void 是返回一个指针,void是无返回值

数组

当对数组进行初始化时,数组的大小可以省略,编译器会根据数组的初始化内容,自动计算数组的元素个数 比如:arr[]

arr的随着下标的增长,地址是由小(低)到大(高)变化的

数组里面变量的个数称为数组长度或数组容量

数组元素的使用与普通变量相同

下标越界不会提醒失败,但运行之后会报错

数组里面可以运算(可以比如:2*4放里面)

数组里面的变量只能缺右面的,不可以先缺左面

数组也算是一个参数

调用函数时,实参去数组名,不可以数组名

[ ],但是形参需要数组名[ ]

一个数组不能给另一个数组整体赋值

错误示范:

假设数组名为B A 且类型、和变量数均相同

B=A

int B[5]=A

C规定数组不能整体使用,也就是不能整体赋值、整体输入、整体输出,每次只能使用里面的一个

二维数组所占的字节数=第一维长度 **第二维长度 sizeof(数据类型)

数据名的值是一个地址(eg:arr和&arr一样)

二维数组的eg:arr[ 1]也是地址(表示这行首个元素的地址,除非比如:arr[1 ][1]里面才是值

数组中每个元素的地址不同

二维数组缺省行数时:把给了的元素都按列数排好后,把剩余未齐那行补齐好了

二维数组的访问需用两层循环

char kind[7]={3,4,5,6,‘a’,}(这里的3,4,5,6,'a’是ascll值

数组不是地址,但是数组名是地址

数组可以用来储存多个字符串,比如 char arr[4][20]//可以储存四个长度不超过19的字符串

传参时,传的数组名是地址

二维数组的数组名是其第一行的地址

二维数组可以这样写

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

按地址方式来取二维数组,可以只用一次for循环

数组不是地址,数组名才是地址

数组作为形参的几种写法(由实参和形参的类型一样可以推出实参写啥)

以下是传递整个数组的几种写法(实参是数组名时的写法):
假设 int a[2] ={0};

形参:
   a[2](但是此时的2没啥用,只能起到一个提醒作用,在实际上,如果传来的数组是3个元素的,也是可以传过来的))
   a[](当时二维数组时,后面的列数要写出,这里就不只是提示作用了(比如:a[][2])
   int *a

数组名不可以++

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值