文档章节

C语言中,数组名作为参数传递给函数时,退化为指针

DannyCoder
 DannyCoder
发布于 2018/08/28 15:00
字数 475
阅读 15
收藏 0

C语言中,数组名作为参数传递给函数时,退化为指针;需要数组大小时,

需要一个参数传数组名,另一个传数组大小。


数组名做函数参数时,就相当于指针了。sizeof对指针操作结果应该是4。
  一般函数参数为数组时,可以有两个参数,一个数组名,一个数组长度的。

首先C语言里面不支持数组作为形参来进行调用,

例如函数void fun(int a[]);里面的a实际上在进行编译时,是作为指针来处理的,所以上面的函数完全等价于void fun(int *a);

所以当你利用sizeof的时候返回的将是int指针的内存字节数,所以当你想知道数组长度的时候只能做这样的函数了,void fun(int *a,size_t n);

 

数组作为参数传给函数时,传的是指针而不是数组,传递的是数组的首地址,如 fun (char[8]),fun(char [])都等价于 fun(char*)~~

在C++里传递数组永远都是传递指向数组首元素的指针,编译器不知道数组的大小。

如果想在函数内知道数组的大小,需要这样做:进入函数后用memcpy将数组复制出来,长度由另一个形参传进去~~

代码如下:

fun (unsigned char *p1,int len)

{

unsigned char* buf = new unsigned char[len+1];

memcpy(buf,p1,len);

}

本文转载自:http://blog.sina.com.cn/s/blog_63c78ecb01018mii.html

DannyCoder
粉丝 3
博文 69
码字总数 36859
作品 0
广州
程序员
私信 提问
C语言数组与指针一本道来

数组与指针.png 一本道来其他系列 C语言关键字 C语言注释符号一本道来 C语言编译预处理技术一本道来 指针的基础 注意本节内容可能在gcc下不能完成编译,请切换到Windows平台,使用或其他 指针...

PcDack
2017/12/04
0
0
数组 | C语言

数组 中的a是数组名,它指向数组中的第一个元素。但是当其做为的操作数,或者使用取地址的时候,要把作为带个数组来考虑。 数组名与数组名取地址 先看一个例子: 打印结果是。两者的值是一样...

好好编程
2018/01/16
0
0
sizeof与strlen的区别

char str[20]="0123456789"; int a=strlen(str); /*a=10;strlen 计算字符串的长度,以\0'为字符串结束标记。 int b=sizeof(str); /*b=20;sizeof 计算的则是分配的数组str[20] 所占的内存空间......

晨曦之光
2012/03/09
251
0
sizeof和strlen的区别

一、sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 它的功能是:获得保证能容纳实现所建立的最大对象...

8yi少女的夢
2018/06/26
0
0
C语言学习之七——指针_2_数组

指针和数组 1.1通过指针得到整个数组:由于数组是由各个具有相同性质的数组元素按照一定顺序排布的集合,而每个数组元素都占一定的内存空间,且由数据结构知识可知,数组元素在内存中的排布是...

Eric_Hunter
2017/12/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

php 遇到 No input file specified的解决方法

(一)IIS Noinput file specified 方法一:改PHP.ini中的doc_root行,打开ini文件注释掉此行,然后重启IIS 方法二: 请修改php.ini 找到 ; cgi.force_redirect = 1 去掉前面分号,把后面的1...

chenhongjiang
今天
5
0
MySQL 基础

一、常用命令 在命令行中,配置好环境变量后,通过cmd可以直接进入mysql命令行模式,同时列举几种常用命令 # 进入mysql数据库,密码可以先不写,打完-p后再输入,防止被别人看到mysql -u账...

华山猛男
今天
6
0
简单的博客系统(四)Django请求HTML页面视图信息--基于函数的视图

1. 编写用于查询数据的功能函数 应用目录 下的 views.py 文件通常用于保存响应各种请求的函数或类 from django.shortcuts import renderfrom .models import BlogArticles# Create your ...

ZeroBit
今天
5
0
用脚本将本地照片库批量导入到Day One中

因为目前iCloud 空间已经不足,其中95%都是照片,之前入手了DayOne,且空间没有限制,订阅费一年也不少,再加上DayOne作为一款日记App 也比较有名,功能方面最大的就是地理视图与照片视图,尤...

在山的那边
昨天
19
0
jupyter部署安装

python373 -m ipykernel install --name python373 ipython kernelspec list sc create myjupyterservice binpath="D:\apply\Python373\Scripts\jupyter-notebook --config=V:/my_work/jupyt......

mbzhong
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部