【C语言】函数的数组传参
首先明确数组名是地址
只有两种情况下数组名不是地址:
1.sizeof(数组名),这时候计算的是整个数组的字节长度
2.&数组名,例如在32位系统中,整形数组 arr里面五个元素,输出这个数组首元素地址。末尾是00那么&arr+1 输出末尾就是4*5+4
第一种方式是直接传入数组:
若有函数void print(int arr[])
则可以直接传值如print(arr)
然后可以在print函数里头直接对数组进行赋值等,不需要使用指针,如
void print(int arr[])
{int a = 0;for(a=0;a<3;a++){arr[a] = a;}
}
以reverse_string函数为例子 展示形参为数组的指针的写法
int mystr(char* p)
{int i = 0;int over = 1;while (over){if (*p != '\0'){p++;i++;}elseover = 0;}return i;
}
void reverse(char *p, int sz)
{char* l = p;char* r = p + sz - 1;char mid = '0';while (l < r){mid = *l;*l = *r;*r = mid;l++;r--;}
}
int main()
{char arr[] = "asdfghj";int sz = mystr(arr);//错误写法://int* p = arr / &arr / &arr[]; 然后 mystr(p)//char *p表示接受地址 则直接传地址 将数组地址视为指针变量//char arr[] 也是直接传地址 因为本质上也是地址reverse(arr, sz);printf("%s\n", arr);return 0;
}
【C语言】函数的数组传参相关推荐
- 【让你从0到1学会C语言】指针/数组传参以及static关键字
作者:喜欢猫咪的的程序员 专栏:<C语言> 喜欢的话:世间因为少年的挺身而出,而更加瑰丽. --<人民日报> ...
- 【C语言】关于数组传参问题/首地址
数组在作为参数传递时,传递的是整个数组还是首地址呢? 先来看一段代码: void main() {int nums[] = { 1,2,3,4,5 };printf("&nums = ...
- 在qt中用c语言数组,在QT函数中返回一个数组/把一个数组传参给函数
1.把数组传参给函数 可以定义一个QVector的一个数组 QVector num(10); for(int i =0;i<10;i++) num [i] = i*i; fun(num); / ...
- C语言补漏:字符串指针与字符数组传参
字符串指针与字符数组传参 深信服的笔试上被吊打,其中对一道用指针做形参的题目印象十分深刻,借此恶补了一晚上指针,今天总结,以作警示. 试想有如下情形,将一个字符串指针做形参赋值函数修改其字符串,函 ...
- 指针进阶(指针与数组传参、数组指针与指针数组、函数指针数组、回调函数的辨析)
指针 指针作为C语言中极具代表性的特征之一,也是C语言学习中的一大难点. 简单来说,指针我们需了解的最基础的即: 指针是一个用来存放地址的变量,地址唯一标识一块内存空间. 指针的大小是固定的4/8个字 ...
- 数组作为函数的参数传参时,数组名会退化为指针
1.数组作为函数的参数传参时,数组名会退化为指针 数组作为函数的参数传参时,数组名会退化为指针,数值传参时,需要把数值的长度一起传过去,另外,sizeof()运算符包含字符串的哨兵'/0',而strl ...
- 数组传参中形参的秘密,以及数组名当作函数实际参数的特点,以及二维数组,以及外部变量和全局变量
1.数组传参中形参的秘密 第三行:形参中不存在数组的概念,即便是中括号约定了数组的大小,也无效. 第二十行:传递的是一个地址,是数组的首地址. 数组名代表了整个数组的首地址. 第二十一行:第一个元素的 ...
- 【C语言进阶】⑤关于数组传参和指针传参辨析
文章目录 一.数组 1.1.一维数组 1.2.二维数组 1.3.指针和数组 二.数组传参 2.1一维数组传参 2.2二维数组传参 2.3小结 三.指针传参 3.1一维指针传参 3.3二级指针传参 四. ...
- 一篇让你弄明白C语言指针传参和数组传参~
文章目录 前言 ⭐️指针传参和数组传参 ⭐️一维数组传参 ⭐️一级指针传参 ⭐️一道经典的指针传参相关题目 ⭐️二维数组传参 ⭐️函数指针!!! ⭐️一个有趣的代码!(*(void( * )())0) ...
最新文章
- 如何用技术搞好英俄翻译?
- (转)HLSL,函数列表
- 数据库自动收缩带来的严重问题
- mysql配置-django
- EF Core查询标签TagWith
- bst 删除节点_C ++程序查找具有N个节点的BST数量(加泰罗尼亚编号)
- Tomcat 5 5 JNDI Resource 配置
- Divergent series
- Ripple(Glance)
- 简单的HTML5 Web Storage留言册
- Atitit webserver web服务器的艺术 目录 1.1. 2.2 使用处理器处理请求	1 2. 2.5 处理器的作用域 :	2 2.1. 在Jetty中,很多标准的服务器会继承Handl
- Anaconda3创建、删除虚拟环境(win10)
- L2-029 特立独行的幸福
- 2019CCPC湖南全国邀请赛(广东省赛、江苏省赛)重现赛
- 如何解决High Sierra 10.13.6 系统iCloud无法连接的问题?
- c语言函数写巴德歌赫猜想,高三励志演讲稿范文
- 面试施工员的时候你知道会问什么问题吗?
- x86架构鼻祖-i8086
- 浅析LRU(K-V)缓存
- 数据库的schemas(模式)
热门文章
- 如何使用winrar压缩工具实现:文件打包为自解压EXE类型
- 老小白手机安装termux(换源)运行Python2
- python 神经网络预测未来30天数据_使用LSTM循环神经网络的时间序列预测实例:预测未来的货币汇率...
- 澳元兑美元预测:美元可能因美国经济衰退担忧而进一步下跌(MogaFX)
- 无限循环小数四则运算_0.9999……=1? 无限循环小数能否进行四则运算?
- 递归题目练习---扭蛋机
- 正在找工作的程序员们,一定要注意新型劳务派遣套路
- 蓝牙耳机哪个品牌最好?2023最新学生平价蓝牙耳机推荐
- 4位先行进位加法器的vhdl程序_VHDL精密,Verilog简洁,但要写好都要遵守这25条通则...
- Java-Web总结03