C 语言函数参数只能传指针,不能传数组
2015-03-15 21:24
323 查看
今天被要求编写一个C/C++冒泡算法的程序,心想这还不是手到擒来的事儿,虽然最近都是用Javascript程序,很少写C/C++程序,但是好歹也用过那么多年的C语言;
首先想的是怎么让自己的代码看上去更高大上一点,怎么着也得能自动识别数组的长度吧:于是第一版程序如下,结果如下
看到结果,很是惊讶,为什么是2呢?看到后面我列出可执行文件的类型,应该知道,这个长度是指针的长度,64bit,刚好两个字节。说明sortof求得是指针的长度,而非数组的长度。
仔细想想,函数的参数只能传递指针,不能直接传递数组;
所以,要想传递数组,必须要传递数组首地址指针(通数组的类型一致),以及数组的长度,用来表示数组的结尾。
首先想的是怎么让自己的代码看上去更高大上一点,怎么着也得能自动识别数组的长度吧:于是第一版程序如下,结果如下
看到结果,很是惊讶,为什么是2呢?看到后面我列出可执行文件的类型,应该知道,这个长度是指针的长度,64bit,刚好两个字节。说明sortof求得是指针的长度,而非数组的长度。
仔细想想,函数的参数只能传递指针,不能直接传递数组;
所以,要想传递数组,必须要传递数组首地址指针(通数组的类型一致),以及数组的长度,用来表示数组的结尾。
相关文章推荐
- 【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)
- C程序设计语言- 指针与数组-4.1----指针与地址、指针与函数参数、指针与数组、地址算术运算
- C语言学习6 :指针的定义,指针类型要合法,指针要初始化,指针做函数参数,数组和指针的通用性,指针+1所代表的空间,void * 指针,交换函数中的指针,数组和字符型指针区别,字符型指针的应用,使用指针完成字符操作函数
- C语言中 数组作为函数形参传递相当于指针,在函数中不能得到数组长度,只能得到指针长度4
- 利用数组名作为函数参数传递排序和用指针进行排序
- 结构体变量、结构指针变量、结构数组作为函数的参数应用实例分析
- C++中将数组的指针作为函数参数
- 如何理解数组作为函数参数时,数组名就是指针?
- C语言中将函数指针作为参数的语法知识
- 巩固:数组作为函数参数& 指针作为函数参数的用法
- 双指针函数参数什么时候需要加 const,什么时候不能加?
- 一级指针不能做函数参数传递动态内存的理解
- 鸡啄米:C++编程入门系列之二十六(数组、指针和字符串:数组的存储与初始化、对象数组、数组作为函数参数)
- 用指向数组的指针作函数参数
- 鸡啄米:C++编程入门系列之三十(数组、指针和字符串:指针用作函数参数、指针型函数和函数指针)
- 用指向指针的指针作函数的参数(指针、指针数组、指向指针的指针)
- 学点 C 语言(36): 函数 - 数组参数
- 数组作为函数的参数时,不能通过sizeof运算符得到该数组的大小
- 二维数组做函数参数,如何将三维数组降为二维数组,指向数组的指针的使用
- ifstream参数只能为char型数组,而不能为string