数组和函数

一:数组

1,数组长度必须确定

2,初始化方式:

int a[5] = {1,2}; //部分初始化,其余默认为0 int a[] = {1,2,3,4,5};//元素确定,可以不指认长度默认长度为5

int a[] = {0}; //全部元素都默认为0

 

int a[3][4] = {1,2,3,4,5,5,66,7,7,88,,1,2};

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

结果

 

若将元素个数修改如下

结果

 

3,未初始化的局部变量为垃圾值

未初始化的全局变量为0值

 

4,sizeof() 是关键字,不是函数,用来计算数组所占字节数.

eg: int a[5]; length = sizeof(a)/sizeof(a[0]);

 

5, 数组的地址 a和&a

辨析:int array[3]

&array[0] 数组首元素地址,单位4字节

array 数组首行首地址,单位4字节

&array 数组的地址,单位为 3*4字节

二维数组

int a [4][3]

&a[0][0] 数组首元素地址,单位4字节

a[0] 数组首行首元素地址,单位4字节

&a[0] 数组首行的地址,单位12字节

a 数组首行的地址,单位12字节

&a 数组的地址,单位为 3*4*4字节

 

 

*和&可互相抵消

a[x] === *(a+x)

6,字符数组

strcat( str,ptr ) //将Ptr接到str后

strcpy( str,ptr) //将Ptr拷贝到str中,ptr 指向的字符串包括\0一起拷贝到str中。

strncpy( str,ptr,1) //只拷贝一个字符

strcmp(str,ptr) // 字符串比较函数

strncmp(str,ptr,1) //只比较一个字符

使用这些函数时,必须加上#include <string.h>

 

 

 

二,函数

1,函数调用

(1)形参个数要和实参个数对应

(2)形参类型要和实参类型对应

(3)形参名字和实参名字可以不对应

函数里面一旦遇到return,函数调用立马结束。

    与return类似,在任何函数中遇到exit(), 整个程序终止。

2,函数调用过程

(1)通过函数名找到函数的入口地址(函数名就是地址)

(2)给形参分配空间

(3)传值(把实参传给形参)(值传递,地址传递)

(4)执行函数体

(5)返回

(6)释放空间(释放的是栈空间)

值传递为单向传递,形参与实参占用不同的内存

地址传递为双向传递,形参与实参占用相同的内存

 

3,变量的存储类型

register:寄存器存储变量,主要提高运行效率

&取地址, 取得是内存的地址,所以不能对寄存器变量取地址

extern:声明一个外部变量,程序将要用到但尚未定义的变量

static:定义

修饰全局变量,改变变量的作用域只能在当前文件中被调用

修饰函数,改变函数的作用域,只能在当前文件中被调用

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值