C for ios --- 数组元素作为函数参数

IOS开发之路–C语言数组和字符串 概览 数组在C语言中有着特殊的地位,它有很多特性,例如它的存储是连续的,数组的名称就是数组的地址等。而在C语言中是没有String类型的,那么如果要表示一个字符串,就必须使用字符串数组。今天主要就介绍如下三个方面: 一维数组 多维数组 字符串 一维数组 一维数组操作比较简单,但是需要注意,数组长度必须是固定的,长度不能使用变量进行初始化;如果声明的同时进行赋值则数组长度可以省略,编译器会自动计算数组长度;同时数组不能先声明再一次性赋值(当然可以对每个元素一一赋值)。 #include <stdio> int main(){ int len = 2; //int a[len] 立即下载

数组元素作为函数参数


  • 数组可以作为函数的参数使用,进行数据传送。数组用作函数参数有两种形式:
    • 一种是把数组元素(下标变量)作为实参使用
    • 一种是把数组名作为函数的形参和实参使用

1.数组元素作为函数参数

  • 数组元素就是下标变量,它与普通变量并无区别。 因此它作为函数实参使用与普通变量是完全相
    同的,在发生函数调用时,把作为实参的数组元素的值传送给形参,实现单向的值传送。

  • 数组的元素作为函数实参,与同类型的简单变量作为实参一样,是单向的值传递,即数组元素的值传给形参,形参的改变不影响实参

~~ void change(int val)// int val = number
~~ {
~~     val = 55;
~~ }
~~ int main(int argc, const char * argv[])
~~ {
~~     int ages[3] = {1, 5, 8};
~~     printf("ages[0] = %d", ages[0]);// 1
~~     change(ages[0]);
~~     printf("ages[0] = %d", ages[0]);// 1
~~ }
  • 用数组元素作函数参数不要求形参也必须是数组元素

2.数组名作为函数参数

  • 在C语言中,数组名除作为变量的标识符之外,数组名还代表了该数组在内存中的起始地址, 因此,当数组名作函数参数时,实参与形参之间不是”值传递”,而是”地址传递”,实参数组名将 该数组的起始地址传递给形参数组,两个数组共享一段内存单元,编译系统不再为形参数组分配 存储单元。
  • 数组的名字作为函数实参,传递的是整个数组,即形参数组和实参数组完全等同,是存放在同一存储空间的同一个数组。这样形参数组修改时,实参数组也同时被修改了。形参数组的元素个数可以省略
  • 如果形参是基本数据类型,修改形参的值不会影响实参,如果形参是数组,修改形参的值会影响实参。
  • 数组作为形参会自动转换为指针,指针占用8个字节,当数组作为形参时形参转换为指针,所以指针永远为8个字节
~~ void change2(int array[3])// int array = 0ffd1
~~ {
~~     array[0] = 88;
~~ }
~~ int main(int argc, const char * argv[])
~~ {
~~     int ages[3] = {1, 5, 8};
~~     printf("ages[0] = %d", ages[0]);// 1
~~     change(ages[0]);
~~     printf("ages[0] = %d", ages[0]);// 88
~~ }

3.数组名作函数参数的注意点

  • 在函数形参表中,允许不给出形参数组的长度
~~ void change2(int array[])
~~ {
~~     array[0] = 88;
~~ }
  • 形参数组和实参数组的类型必须一致,否则将引起错误。
~~ void prtArray(double array[3]) // 错误写法
~~ {
~~     for (int i = 0; i < 3; i++) {
~~         printf("array[%d], %f", i, array[i]);
~~     }
~~ }
~~ int main(int argc, const char * argv[])
~~ {
~~     int ages[3] = {1, 5, 8};
~~     prtArray(ages[0]);
~~ }
  • 当数组名作为函数参数时, 因为自动转换为了指针类型,所以在函数中无法动态计算除数组的元素个数
~~ void printArray(int array[])
~~ {
~~     printf("printArray size = %lu\n", sizeof(array)); // 8
~~     int length = sizeof(array)/ sizeof(int); // 2
~~     printf("length = %d", length);
~~ }
TMC2209串口配置实战:从寄存器解析到电机精准控制 本文详细解析TMC2209步进电机驱动芯片的串口配置方法,从硬件连接到UART通信协议,再到核心寄存器功能详解。通过实战案例展示电流控制、微步细分和速度调节等关键配置,帮助工程师实现电机精准控制,并提供了常见故障诊断和优化技巧。 阅读详情

相关推荐

Spark入门:从零到能跑的实战教程

Spark 的强大在于它统一了大数据处理的多种场景,从批处理到流处理,从 SQL 到机器学习。对于初学者来说,理解 Spark 的核心理念——内存计算和分布式抽象,是最重要的一步。接着,学会用 PySpark 搭建环境,能读数据、能写 SQL,基本上就入门了。剩下的路,就是通过实战去加深理解。写到这里,相信你对 Spark 已经有了一个比较完整的认识。下一步,不妨自己动手写几个 PySpark 脚本,跑一跑日志数据,或者尝试用 Spark SQL 做一个统计。

Morpheon的博客 1369

IOS中数组值传递问题

1. swift中Array的值传递问题 Array是个结构体,就是值类型,值类型传递传递的是值,修改传递过去的值不会改变原来的值 当Array中的元素是值类型时候, 那么就是值传递 当Array中的元素是引用类型时,那么传递方式就是引用传递 ...

yong_19930826的博客 1545

国产FPGA开发实战:紫光同创编程软件中的约束文件详解与常见问题

本文详细解析了紫光同创FPGA编程软件中约束文件的关键配置技巧与常见问题。通过基础架构解析、时钟约束实践、物理约束调控及典型问题排查指南,帮助开发者高效掌握国产FPGA开发中的约束文件应用,提升开发效率与设计稳定性。

gin88的博客 904

iOS 数组(自定义类数组)去重

//去重处理     NSMutableArray&lt;MATracePoint *&gt; *locations = [NSMutableArray arrayWithArray:record.tracedLocations];       NSMutableArray * tempArr = [NSMutableArray array];     //BOOL isHave = fa...

zhouleizhao的专栏 1656

2024年最全scrapy+scrapyd+gerapy 爬虫调度框架,字节跳动面试时间

scrapyd是一个用于部署和运行scrapy爬虫的程序,它允许你通过JSON API来部署爬虫项目和控制爬虫运行,scrapyd是一个守护进程,监听爬虫的运行和请求,然后启动进程来执行它们方便地控制爬虫运行直观地查看爬虫状态实时地查看爬取结果简单地实现项目部署统一地实现主机管理轻松地编写爬虫代码。

2401_84140653的博客 1200

Python高效转换病理图像:从mrxs到SVS的完整实践指南

本文提供了使用Python将数字病理切片从mrxs格式高效转换为SVS格式的完整实践指南。针对mrxs格式兼容性差的问题,文章详细解析了基于openslide和tifffile库的核心转换流程,并重点分享了应对大内存消耗的优化方案与流式处理技巧,确保转换后的SVS文件保留多分辨率金字塔结构,兼容主流病理分析工具。

weixin_29051811的博客 547

iOS基础知识:数组作为函数的参数

数组作为函数的参数:        1.定义语法:                返回值类型  函数名(类型 数组名[]){                      函数体;                } 例如: void array(int str[]){ str[0]=10; str[1]=20; }          注意:参数里数组名中括号的长度,可

strangerben的博客 2126

【74HC595芯片】核心驱动代码

74HC595是一个8位串行输入、并行输出的位移缓存器:并行输出为三态输出。在SCK 的上升沿,串行数据由SDL输入到内部的8位位移缓存器,并由Q7’输出,而并行输出则是在LCK的上升沿将在8位位移缓存器的数据存入到8位并行输出缓存器。当串行数据输入端OE的控制信号为低使能时,并行输出端的输出值等于并行输出缓存器所存储的值。

weixin_67147824的博客 1847

C语言数组

  C语言数组 一、数组的概念 用来存储一组数据的构造数据类型 特点:只能存放一种类型的数据,如全部是int型或者全部是char型,数组里的数据成为元素。   二、数组的定义 格式: 类型 数组名[元素个数]; 举例:存储5个人的年龄 Int agrs[5]; //在内存中开辟4x5=20个字节的存储空间 可以在定义数组的同时对数组进行初始化: Int ages[5]={17...

weixin_34204722的博客 278

直方图均衡化原理及matlab和opencv实现代码

详细分析了直方图均衡化的数学原理,配有matlab和opencv实现代码

qq_21603315的博客 4777

使用 Python 构建 Reddit 热帖爬虫:抓取热门讨论帖和评论

在现代互联网中,Reddit 被誉为全球最大、最活跃的讨论平台之一,汇聚了各种主题的帖子、评论和社交互动。因此,抓取 Reddit 上的热门帖子和评论可以为我们提供一个丰富的文本数据源,可以用于情感分析、话题建模、趋势分析等应用。Reddit 提供了官方的 API,可以让开发者获取包括帖子、评论、用户信息等在内的各种数据。我们可以结合上述方法,抓取多个热门帖子,并将每个帖子的标题、作者、发布时间和评论内容保存到一个数据结构中。每个帖子的对象包含了丰富的信息,如标题、内容、发布时间、作者等。

2201_76125261的博客 381

【C语言】-指向一维数组元素的指针

本文目录 一、用指针指向一维数组的元素 二、用指针遍历数组元素 三、指针与数组的总结 四、数组、指针与函数参数 说明:这个C语言专题,是学习iOS开发的前奏。也为了让有面向对象语言开发经验的程序员,能够快速上手C语言。如果你还没有编程经验,或者对C语言、iOS开发不感兴趣,请忽略 前面我们已经学习了指针,如果指针存储了某个变量的地址,我们就可以说指针指向这个变量。...

dehuai19940321的博客 270

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

iOS开发分分钟搞定C语言 —— 数组及排序

数组

IOS_龙的博客 932

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【C语言】12-指向一维数组元素的指针

本文目录 一、用指针指向一维数组的元素二、用指针遍历数组元素三、指针与数组的总结四、数组、指针与函数参数 说明:这个C语言专题,是学习iOS开发的前奏。也为了让有面向对象语言开发经验的程序员,能够快速上手C语言。如果你还没有编程经验,或者对C语言、iOS开发不感兴趣,请忽略 前面我们已经学习了指针,如果指针存储了某个变量的地址,我们就可以说指针指向这个变量。数组及其数组元素都占有

easyer2012的专栏 944

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

C语言中 字符、数组、字符串、指针——学习IOS你必须了解

一、char类型 1、内存存储:对应于ASCII码表存储 字符 ASCII码值 内存存储 A    65        0100 0001 B    66        0100 0010 C    67        0100 0011 a    97        0110 0

陈玄正的专栏 826

iOS开发-C语言-数组

一、数组的基本概念及分类 1、基本概念 在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。 在C语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基 本数据类型或是构造类型。 数组的几个名词 1)数组:一组具有相同数据类型的数据的有序的集合 2)数组元素:构成数组的数据。数组中的每一个数组

iOS开发之C语言,OC基础 702

C for ios --- 二维数组与函数

二维数组与函数1.二维数组的元素作为函数参数 二维数组的元素就相当于变量,作为函数参数与变量相同 ~~ void test(char c); ~~ int main(int argc, const char * argv[]) { ~~ char cs[2][3] = ~~ { ~~ {'l', 'n', 'j'}, ~~ {'l', 'm', 'j'

So Now,Trust Me 515

c语言函数调用未初始化数组6,iOS开发 -- C语言基础6(数组)

iOS开发 -- C语言基础6(数组)C语言数组一、数组的概念用来存储一组数据的构造数据类型特点:只能存放一种类型的数据,如全部是int型或者全部是char型,数组里的数据成为元素。为了让大家更好地学习和理解数组,我们先来认识一下内存中的"地址"。二、地址1.计算机中的内存是以字节为单位的存储空间。内存的每一个字节都有一个唯一的编号,这个编号就称为地址。凡存放在内存中的程序和数据都有一个地址,也就...

weixin_28197941的博客 391

c语言26个字母指针数组排序,C语言:通过指针对数组元素进行排序

//// main.c// Pointer_array//// Created by ma c on 15/8/2.// Copyright (c) 2015年 bjsxt. All rights reserved.// 要求:使用指针的指针输出字符串。首先要使用指针数组创建一个字符串数组,然后定义指向指针的指针,使其指向字符串数组,并使用其输出数组中的字符串。同时对数组中的内容进行升序...

weixin_31569671的博客 1570

C语言 12-指向一维数组元素的指针

本文目录 一、用指针指向一维数组的元素 二、用指针遍历数组元素 三、指针与数组的总结 四、数组、指针与函数参数   说明:这个C语言专题,是学习iOS开发的前奏。也为了让有面向对象语言开发经验的程序员,能够快速上手C语言。如果你还没有编程经验,或者对C语言、iOS开发不感兴趣,请忽略。   前面我们已经学习了指针,如果指针存储了某个变量的...

weixin_30274627的博客 756

C语言-指向一维数组元素的指针

本文目录 一、用指针指向一维数组的元素二、用指针遍历数组元素三、指针与数组的总结四、数组、指针与函数参数 说明:这个C语言专题,是学习iOS开发的前奏。也为了让有面向对象语言开发经验的程序员,能够快速上手C语言。如果你还没有编程经验,或者对C语言、iOS开发不感兴趣,请忽略 前面我们已经学习了指针,如果指针存储了某个变量的地址,我们就可以说指针指向这个变量。数组及其数组元素都占有存储

smxueer的专栏 1000

黑马程序员_iOS_C_二维数组

——- android培训、java培训、期待与您交流! ———-1.二维数组定义 c语言并不支持多维数组。 格式:类型说明符 数组名[常量表达式1(行)][常量表达式2(列)]/* 二维数组为特殊的一维数组 即一维数组的元素为数组 */ int a[2][3]//2行3列2.二维数组初始化 2.1定义的同时初始化 1)完全初始化int a[2][3] = {{1,2,3},{4,5,6}}

g363226848的博客 342
上一篇: C for ios ---数组内存分析
下一篇: C for ios --- 二维数组与函数
ProbuINg
博客等级 码龄14年 10粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值