二维数组名在函数间传递_指针函数详解

e26ec17546445c1445e77eec054799d1.png

1. 指针:(数据类型)

保存地址的数据类型;

2. 指针变量:(保存地址的变量)

指向p:保存p的地址

3. 变量的首地址:&变量名;

4. 指针的定义:

类型名 变量名;

类型名 * 变量名;(*表示指针变量);

(指针的计算=====类型名)

定义:先*,后变量名,后类型名。

Int -3 *-1 p -2 ;

5. 指针所占字节(数据类型)

在32位系统中,占4个字节;

6. 指针变量类型:(去掉变量名)

Int * * ppf ;

7. 指针定义结束后必须初始化,避免野指针;

8. 内存空间的访问:

直接访问:通过变量名的方式访问;

间接访问:通过地址的方式访问;

9. 取值运算符:*地址;和&是互逆运算;

10. 取址运算符:&变量名;(首地址)

11. 段错误:

操作非法的内存空间;(操作野指针);

使用系统未经分配给自己的内存空间;

12. 空指针NULL 宏定义为0

13. 指针初始化:=NULL;

14. *指针变量==等于变量名,而不是内存空间存放的常量;

int i=5, *p=&i;

*p=8; //正确,更改i的值。

0d0c0bd83ab9bc7e61941c0a75f250f9.png

答案:B.C

B: *p2不建议使用;查看非法内存空间;

D: *p2=*p1; 操作(写)非法内存空间;

15. 指针(地址)的运算(数组名的运算)

物理地址=绝对地址+地址偏移

P+i ===== p+i*sizeof(数据类型)

5434d8d53e25f058fff69cdce177e36a.png

16. 数组元素的指针访问:

若P=arr; //p=&arr[0]

则:

*(P+i)==*(arr+i)==arr[i]==p[i]

无条件:arr[i]=====*(arr+i)

175b3fa1538a590eba15a653dd3a3160.png

P[2]===*(p+2)==a[7]

2a662a8d59faf96456aadd5c375941e3.png

17. 数组编程技巧:(连写)

int i , *p=&i ;

18. 函数:

返回值类型 函数名 (形参列表)

函数的入口: 形参;调用时分配内存空间)

参数传递:值传递;地址传递;

参数传递为副本模式,地址传递时若要需要加const

函数的出口:返回值;副本模式

19. GDB调试

1. 编译带调试参数的可执行文件。

2. 设置断点b 运行r

3. next 语句(n) ; step 单步 (s)

4,。退出q;

20. 函数的声明

形参变量名可省略;但是定义时不可缺省。

21. 二维数组名:(数组名是一个指针)

e03cfc4c4c591bdc0dea04279d375eaf.png

22. 技巧:

元素下标【】:隐含有*

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值