专题4-7数组参数和指针参数分析(国嵌C语言视频)
来源:互联网 发布:特斯拉电磁塔升级数据 编辑:程序博客网 时间:2024/06/08 03:44
1. 思考
为什么C语言中的数组参
为什么C语言中的数组参
数会退化为指针?
退化的意义
C语言中只会以值拷贝的方式传递参数
当向函数传递数组时
将整个数组拷贝一份传入函数
将数组名看做常量指针传数组首元素地址
C语言以高效为最初设计目标,在函数传递的时
候如果拷贝整个数组执行效率将大大下降。
二维数组参数
二维数组参数同样存在退化的问题
二维数组可以看做是一维数组
二维数组中的每个元素是一维数组
二维数组参数中第一维的参数可以省略
void f(int a[5]); void f(int a[]); void f(int* a);
void g(int a[3][3]); void g(int a[][3]); void g(int (*a)[3]);
等价关系
数组参数 等效的指针参数
二维数组:char a[3][4] 数组的指针:char (*a)[4]
指针数组:int* a[5] 指针的指针:int** a
一维数组:float a[5] 指针:float* a
注意事项
C语言中无法向一个函数传递任意的多维数组
为了提供正确的指针运算,必须提供除第一维之外的
所有维长度
限制
一维数组参数– 必须提供一个标示数组结束位置的长度信息
二维数组参数– 不能直接传递给函数
三维或更多维数组参数– 无法使用
#include <stdio.h>void access(int a[][3], int row){ int col = sizeof(*a) / sizeof(int); int i = 0; int j = 0; printf("sizeof(a) = %d\n", sizeof(a)); for(i=0; i<row; i++) { for(j=0; j<col; j++) { printf("%d\n", a[i][j]); } }}int main(){ int a[3][3] = {{0, 1, 2}, {3, 4, 5}, {6, 7, 8}}; access(a, 3);}
- 专题4-7数组参数和指针参数分析(国嵌C语言视频)
- 专题4-5指针数组和数组指针分析(国嵌C语言视频)
- C语言深度剖析-----数组参数和指针参数分析
- 专题4-3.数组与指针分析(国嵌C语言视频)
- 专题4-6.多维数组和多维指针(国嵌C语言视频)
- C语言学习笔记(20) 数组参数和指针参数分析
- 专题6-2,可变参数列表与宏分析(国嵌C语言视频)
- 【C语言复习(十八)】数组参数和指针参数
- C语言数组参数与指针参数
- C语言数组参数与指针参数
- C语言数组参数与指针参数
- C语言数组参数与指针参数
- C语言数组参数与指针参数
- C语言之数组专题:数组指针、指针数组、数组做函数参数退化、数组名、数组类型
- C语言之数组专题:数组指针、指针数组、数组做函数参数退化、数组名、数组类型
- 专题5-4.野指针和内存操作分析(国嵌C语言视频)
- 数组参数和指针参数的分析
- 数组参数 和 指针参数 分析
- 最近在学习mysql数据库,一些记录总结
- 《十天学会web标准(div+css)》之第八天:下拉及多级弹出菜单
- 我看新浪网改版--CMS建站专家发哥的三言两语(转载)
- 文件读取及对信息排序
- CSS单词及属性
- 专题4-7数组参数和指针参数分析(国嵌C语言视频)
- 可变参数列表
- 10881 - Piotr's Ants 趣味模拟题
- 《学习OpenCV》练习题第四章第二题
- nutch 学习笔记
- 计算机科学中的树
- 获取navigationcontroller栈中的倒数第二个视图控制器
- Uva 151 - Power Crisis
- 开源资料:firework 脚本方面的资料