【C语言】指针那些事之数组传参和指针传参的区别

news2024/9/21 10:45:58

C语言系列

文章目录


目录

C语言系列

文章目录

前言

一,数组传参和指针传参

1.1一维数组传参

1.2二维数组传参

1.3一级指针传参

1.4当一个函数的参数部分为一级指针的时候,函数可以接收什么参数

1.5二级指针传参

1.6当函数的参数为二级指针的时候,可以接收什么参数?

总结


前言

该文章详细的讲解都有啥指针,及包括指针的日常使用等等,各位可以愉快的食用该文章的对于指针的理解,可以为大家对指针的理解加深一点。


一,数组传参和指针传参

数组传参,形参是可以写成数组形式的
数组传参的本质是,传递了数组首元素的地址
数组传参,形参也可以是指针

1.1一维数组传参

我们直接在代码中添加注释,以及游行图,让大家可以更加直观的理解代码中的指针的应用:

#include <stdio.h>
void test(int arr[])//传的是首元素的地址
{}
void test(int arr[10])//不会创建新的数组,所有数组大小可以随便写
{}
void test(int* arr)//因为传的是首元素的地址,所有可以直接使用指针
{}
void test2(int* arr[20])//可以使用数组名的形式传参
{}
void test2(int** arr)//可以使用二级指针的形式传参,因为因为传过来的就是一级指针的地址,所以使用二级指针
{}
int main()
{
	int arr[10] = { 0 };
	int* arr2[20] = { 0 };
	test(arr);
	test2(arr2);
	return 0;
}

1.2二维数组传参

我们直接在代码中添加注释,以及运行图,让大家可以更加直观的理解代码中的指针的应用:

void test(int arr[3][5])//数组传参的形式相同就行
{}
void test(int arr[][])//不行对于二维数组来说,传参时要保证传的二维数组的列的大小不能省略
{}
void test(int arr[][5])//行可以省略,但是列不能省略
{}
//总结:二维数组传参,函数形参的设计只能省略第一个[]的数字。
//因为对一个二维数组,可以不知道有多少行,但是必须知道一行多少元素。
//这样才方便运算。
void test(int* arr)//不能这样写,是因为二维数组传参传的首元素地址是第一行的整个地址,这是一个整型指针,整型指针是为了接收整型变量的
{}
void test(int* arr[5])//不能使用指针数组来接收
{}
void test(int(*arr)[5])//可以
{}
void test(int** arr)//不行,二级指针是用来接收一级指针的地址的
{}
int main()
{
	int arr[3][5] = { 0 };
	test(arr);
}

1.3一级指针传参

我们直接在代码中添加注释,以及运行图,让大家可以更加直观的理解代码中的指针的应用:

#include <stdio.h>
void print(int* p, int sz)//一级指针传参的时候,形参直接写成一级指针就可以
{
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d\n", *(p + i));
	}
}
int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9 };
	int* p = arr;
	int sz = sizeof(arr) / sizeof(arr[0]);
	//一级指针p,传给函数
	print(p, sz);
	return 0;
}

1.4当一个函数的参数部分为一级指针的时候,函数可以接收什么参数

我们直接在代码中添加注释,以及运行图,让大家可以更加直观的理解代码中的指针的应用:

void test(int* p)
{

}
int main()
{
	int a = 10;
	int* ptr = &a;
	int arr[5];
	test(arr);//传整型一维数组的数组名
	test(&a);//传整型变量的地址
	test(ptr);//传整型指针
	return 0;
}

1.5二级指针传参

我们直接在代码中添加注释,以及运行图,让大家可以更加直观的理解代码中的指针的应用:

void test(int** ptr)//只能是二级指针接收
{
	printf("num = %d\n", **ptr);
}
int main()
{
	int n = 10;
	int* p = &n;
	int** pp = &p;
	test(pp);//二级指针传参
	test(&p);
	return 0;
}

1.6当函数的参数为二级指针的时候,可以接收什么参数?

我们直接在代码中添加注释,以及运行图,让大家可以更加直观的理解代码中的指针的应用:

void test(char** p)
{

}
int main()
{
	char n = 10;
	char* p = &n;
	char** pp = &p;
	char* arr[6];//char类型的数组,形参可以是二级指针的形式
	test(&p);
	test(pp);
	test(arr);// 
	return 0;
}

总结

本文详细的的介绍了一部分的指针的知识,还有代码的理解帮助,并不是全部的知识,大家感觉有用处就好

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1132576.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

服务器动态/静态/住宅/原生IP都是什么意思

​  在互联网的世界中&#xff0c;我们经常会听到关于IP地址的各种说法&#xff0c;比如服务器动态IP、静态IP、住宅IP和原生IP。那么这些术语究竟代表着什么意思呢?让我们一起来了解一下。 动态IP 动态IP(Dynamic IP)是指互联网服务提供商(ISP)在每次用户上网时&#xff0c…

智安网络|探索语音合成技术的未来:揭秘人工智能配音技术的背后

随着人工智能技术的迅猛发展&#xff0c;配音行业也迎来了人工智能配音技术的崭新时代。人工智能配音技术通过语音合成和自然语言处理等技术手段&#xff0c;实现了逼真的语音合成&#xff0c;为影视、广告和游戏等领域带来了新的可能性。 第一部分&#xff1a;语音合成技术的…

求臻医学:肺癌患者就诊指南及基因检测意义

2023年国家癌症中心公布的最新的数据显示&#xff0c;中国癌症新发病例数前十的癌症分别是&#xff1a;肺癌82万&#xff0c;结直肠癌56万&#xff0c;胃癌48万&#xff0c;乳腺癌42万&#xff0c;肝癌41万&#xff0c;食管癌32万&#xff0c;甲状腺癌22万&#xff0c;胰腺癌12…

塔式服务器介绍

大家都知道服务器分为机架式服务器、刀片式服务器、塔式服务器三类&#xff0c;今天小编就分别讲一讲这三种服务器&#xff0c;第三篇先来讲一讲塔式服务器的介绍。 塔式服务器定义&#xff1a;塔式服务器的外观和普通电脑差不多&#xff0c;直立放置。机箱比较大&#xff0c;服…

信息安全应急响应小组 诚招

介绍 小组接触领域:攻防领域CISP认证,CTF,工业自动化控制,工业网络,机械制图等 小组成立意义;致力于解决公司内外网安全,高校内外网安全,CTF赛题分析,工控领域内网安全等 小组

Stable Diffusion WebUI扩展canvas-zoom详细讲解

canvas-zoom这是什么? 这是一个针对画布做一些操作的工具,比如缩放等。 下面来详细说一下这些操作的热键。 重要的热键: 缩放(Alt+滚轮)、移动画布 (F)、全屏 (S) 和重置缩放 (R) (1)Shift + wheel - 缩放画布 按住Shift + 滚轮之后,一点反应都没有,之后按…

VR全景应用广泛体现在哪里?有何优势?

VR全景作为一种新型营销方式&#xff0c;正在逐渐走进人们的视线&#xff0c;它区别于以往单一角度的照片和视频&#xff0c;VR全景制作显得更加直观、更加真实、更加生动。VR全景通过VR技术将所拍摄的图片变成720度可观看的场景模式&#xff0c;把产品的特色以及魅力整体呈现展…

微电子/集成电路专业学术期刊汇总!

1. JSSC (IEEE Journal of Solid-State Circuits ) IEEE SSCS 旗下的旗舰期刊。IC领域公认的顶刊&#xff0c;难度最大&#xff0c;认可度最高。2020年刚升为一区。 虽然IF只有6.1&#xff0c;但其在IC圈影响力碾压众多一区高分期刊。 投这个期刊必须要有流片和测试结果&…

文件防泄密软件哪个好?

文件防泄密软件哪个好&#xff1f; 在互联网数据时代发展模式下&#xff0c;很多企业的数据都是公司的重要命脉&#xff0c;然后也会有很多人铤而走险&#xff0c;盗取公司机密信息&#xff0c;做违法的事情&#xff0c;然而&#xff0c;保护好公司数据不被泄密成了很多老板头…

Leetcode周赛365补题(3 / 3)

目录 1、2、有序三元组的最大值 - 预处理前后最大值 遍历 &#xff08;1&#xff09;预处理前后值遍历&#xff08;枚举j&#xff09; &#xff08;2&#xff09;枚举k 2、无限数组的最短子数组 - 前缀和 滑动窗口 1、2、有序三元组的最大值 - 预处理前后最大值 遍历 …

linux环境下进程相关概念解释

进程 进程概念PCB(Process control block)进程组织查看进程ps 命令getpid()/getppid()kill -9 pid/ppidfork(&#xff09;为什么fork会有两个返回值&#xff1f;为什么父进程返回子进程的PID&#xff0c;而子进程返回0&#xff1f; linux下的进程状态Z进程孤儿进程 进程优先级查…

新风机小助手-风压变速器

风压变速器是一种用于调节系统中风量和风压的装置&#xff0c;常用于通风系统中。它通过改变进出风口的开度来调整风流的速度和风压。 风压变速器通常由进出风口和可调节的风门组成。风门可以手动或自动调节&#xff0c;控制进出风口的开度&#xff0c;从而改变风量和风压。根据…

数据结构和算法概述

什么是数据结构&#xff1f; 官方解释&#xff1a; 数据结构是一门研究非数值计算的程序设计问题中的操作对象&#xff0c;以及他们之间的关系和操作等相关问题的学科。 大白话&#xff1a; 数据结构就是把数据元素按照一定的关系组织起来的集合&#xff0c;用来组织和存储…

CSC联合培养|公共管理博士赴世界名校瑞士苏黎世联邦理工学院

A同学拟申报CSC联合培养博士项目&#xff0c;要求到专业契合的世界知名高校。最终我们用世界大学排名第7的瑞士苏黎世联邦理工学院邀请函&#xff0c;助其顺利获批CSC&#xff0c;并如期出国。 A同学背景&#xff1a; 申请类型&#xff1a; CSC联合培养博士 工作背景&#xf…

mysql查询最近7天 每天销售额 统计销售额

sql统计每一天的支出数目&#xff0c;支出金额&#xff0c;收入数目&#xff0c;收入金额 finance_type0&#xff1a;收入 finance_type1&#xff1a;支出 部分建表语句&#xff1a; CREATE TABLE finance (finance_id int(11) NOT NULL AUTO_INCREMENT COMMENT ID,finance_u…

Unity 项目中查找仅具有单一颜色的纹理

如何使用 只需在“项目”窗口中创建一个名为“编辑器”的文件夹&#xff0c;然后在其中添加此脚本即可。然后&#xff0c;打开“窗口-单色纹理检测器”并点击“刷新”。 你可能会问&#xff0c;为什么我需要这个&#xff1f;某些纹理可以是 1024x1024 或更大&#xff0c;并且…

PHPstorm 安装汉化包失败解决方法

出错的原因是官方的包和软件的版本不对应&#xff0c;下载对应的汉化包就行了 官网汉化包下载地址https://plugins.jetbrains.com/plugin/13710-chinese-simplified-language-pack----/versions 下载对应ide版本的包&#xff0c;我下载了一个2020版的 放到安装软件的plugins文…

纺织辅料经营小程序商城的作用是什么

数字化时代&#xff0c;各个行业都在通过线上转型实现新增长&#xff0c;纺织辅料厂商也一样&#xff0c;需要通过线上化实现与客户的面对面交流有利于打造品牌及构建私有化流量池&#xff0c;但无论入驻哪家电商平台及垂直行业平台&#xff0c;都有不少的佣金及入驻费。 可通过…

h750错误记录 卡死 ,18b20数据读取失败 解决办法

1.程序运行没反应 &#xff0c;debug发现卡死到 b. **> 解决办法&#xff0c;中断函数缺失&#xff0c;添加即可 2.stm32h750对18b20 读取数据失败 由于hal库没有 微秒延时&#xff0c;故采用nop&#xff08; &#xff09;函数来进行延时&#xff0c;死活读不到温度数据&…

UG\NX二次开发 分享“一键清除高亮工具”的源代码

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 感谢粉丝订阅 感谢 Trust_MJ 订阅本专栏,非常感谢。 简介 一键清除高亮工具,这个工具怎么开发呢?遍历对象使用UF_DISP_set_highlight()吗?下面分享一种最简单的方法: 效果…