首先明确数组名是地址

只有两种情况下数组名不是地址:

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语言】函数的数组传参相关推荐

  1. 【让你从0到1学会C语言】指针/数组传参以及static关键字

    作者:喜欢猫咪的的程序员 专栏:<C语言> 喜欢的话:世间因为少年的挺身而出,而更加瑰丽.                                  --<人民日报> ...

  2. 【C语言】关于数组传参问题/首地址

    数组在作为参数传递时,传递的是整个数组还是首地址呢? 先来看一段代码: void main() {int nums[] = { 1,2,3,4,5 };printf("&nums = ...

  3. 在qt中用c语言数组,在QT函数中返回一个数组/把一个数组传参给函数

    1.把数组传参给函数 可以定义一个QVector的一个数组 QVector num(10); for(int  i =0;i<10;i++) num [i] = i*i; fun(num); / ...

  4. C语言补漏:字符串指针与字符数组传参

    字符串指针与字符数组传参 深信服的笔试上被吊打,其中对一道用指针做形参的题目印象十分深刻,借此恶补了一晚上指针,今天总结,以作警示. ​ 试想有如下情形,将一个字符串指针做形参赋值函数修改其字符串,函 ...

  5. 指针进阶(指针与数组传参、数组指针与指针数组、函数指针数组、回调函数的辨析)

    指针 指针作为C语言中极具代表性的特征之一,也是C语言学习中的一大难点. 简单来说,指针我们需了解的最基础的即: 指针是一个用来存放地址的变量,地址唯一标识一块内存空间. 指针的大小是固定的4/8个字 ...

  6. 数组作为函数的参数传参时,数组名会退化为指针

    1.数组作为函数的参数传参时,数组名会退化为指针 数组作为函数的参数传参时,数组名会退化为指针,数值传参时,需要把数值的长度一起传过去,另外,sizeof()运算符包含字符串的哨兵'/0',而strl ...

  7. 数组传参中形参的秘密,以及数组名当作函数实际参数的特点,以及二维数组,以及外部变量和全局变量

    1.数组传参中形参的秘密 第三行:形参中不存在数组的概念,即便是中括号约定了数组的大小,也无效. 第二十行:传递的是一个地址,是数组的首地址. 数组名代表了整个数组的首地址. 第二十一行:第一个元素的 ...

  8. 【C语言进阶】⑤关于数组传参和指针传参辨析

    文章目录 一.数组 1.1.一维数组 1.2.二维数组 1.3.指针和数组 二.数组传参 2.1一维数组传参 2.2二维数组传参 2.3小结 三.指针传参 3.1一维指针传参 3.3二级指针传参 四. ...

  9. 一篇让你弄明白C语言指针传参和数组传参~

    文章目录 前言 ⭐️指针传参和数组传参 ⭐️一维数组传参 ⭐️一级指针传参 ⭐️一道经典的指针传参相关题目 ⭐️二维数组传参 ⭐️函数指针!!! ⭐️一个有趣的代码!(*(void( * )())0) ...

最新文章

  1. 如何用技术搞好英俄翻译?
  2. (转)HLSL,函数列表
  3. 数据库自动收缩带来的严重问题
  4. mysql配置-django
  5. EF Core查询标签TagWith
  6. bst 删除节点_C ++程序查找具有N个节点的BST数量(加泰罗尼亚编号)
  7. Tomcat 5 5 JNDI Resource 配置
  8. Divergent series
  9. Ripple(Glance)
  10. 简单的HTML5 Web Storage留言册
  11. Atitit webserver web服务器的艺术 目录 1.1. 2.2 使用处理器处理请求 1 2. 2.5 处理器的作用域 : 2 2.1. 在Jetty中,很多标准的服务器会继承Handl
  12. Anaconda3创建、删除虚拟环境(win10)
  13. L2-029 特立独行的幸福
  14. 2019CCPC湖南全国邀请赛(广东省赛、江苏省赛)重现赛
  15. 如何解决High Sierra 10.13.6 系统iCloud无法连接的问题?
  16. c语言函数写巴德歌赫猜想,高三励志演讲稿范文
  17. 面试施工员的时候你知道会问什么问题吗?
  18. x86架构鼻祖-i8086
  19. 浅析LRU(K-V)缓存
  20. 数据库的schemas(模式)

热门文章

  1. 如何使用winrar压缩工具实现:文件打包为自解压EXE类型
  2. 老小白手机安装termux(换源)运行Python2
  3. python 神经网络预测未来30天数据_使用LSTM循环神经网络的时间序列预测实例:预测未来的货币汇率...
  4. 澳元兑美元预测:美元可能因美国经济衰退担忧而进一步下跌(MogaFX)
  5. 无限循环小数四则运算_0.9999……=1? 无限循环小数能否进行四则运算?
  6. 递归题目练习---扭蛋机
  7. 正在找工作的程序员们,一定要注意新型劳务派遣套路
  8. 蓝牙耳机哪个品牌最好?2023最新学生平价蓝牙耳机推荐
  9. 4位先行进位加法器的vhdl程序_VHDL精密,Verilog简洁,但要写好都要遵守这25条通则...
  10. Java-Web总结03