目录
数组传参和指针传参
实践之中不免会碰到数组和指针作函数参数而如何设计形参的问题。

一维数组传参
一维数组传参,下列接收方式是否可行呢?
//1.
void test(int arr[])
{}
//2.
void test(int arr[10])
{}
//3.
void test(int* arr)
{}
int main()
{
int arr[10] = { 0 };
test(arr);
return 0;
}
1.数组传参数组接收,可行但其实都会降级优化成指针,编译器不会真正创建一个数组。
2.由于形参数组形同虚设,所以数组大小无意义,任意大小或无。(有歧义)
3.数组传参本质就是首元素地址,首元素类型为int,所以指针的类型为int*。
所以可以看出[]和*()是等价的。我愿称之为*和[]的爱恨情仇!(‐^▽^‐)
//1.
void test2(int* arr[2])
{}
//2.
void test2(int** arr)
{}
int main()
{
int* arr2[10] = { 0 };
test2(arr2);
return 0;
}
指针数组,每个元素类型为int*,故用二级指针接收数组名。
一维数组传参,数组和指针接收。
二维数组传参
//1.
void test(int arr[3][5])
{}
//2.
void test(int arr[][])
{}
//3.
void test(int arr[][5])
{}
int main() {
int arr[3][5] = { 0 };
test(arr);
}
- 二维数组传参用二维数组接收,行可省略,但列不可以。
//4.
void test(int* arr)
{}
//5.
void test(int* arr[5])
{}
//6.
void test(int(*arr)[5])
{}
//7.
void test(int** arr)
{}
int main() {
int arr[3][5] = { 0 };
test(arr);
}
4.整型指针接收的应该是整型变量的地址,而二维数组数组名为首行的数组地址。
5.指针数组和二维数组无关。
6.二维数组传参用首行数组大小的数组指针接收。
7.二级指针和二维数组无关。
- 二维数组数组名
arr为首行“一维数组”的地址,数组的地址用数组指针接收。
int(*)[5]型数组指针指向元素个数为5的一维数组。指针+1访问到下一行,每次跳一行。再解一层引用访问一行里每个元素。
一级指针传参
反向思考,若函数形参为指针,传参时实参可以如何设计呢?
void test(int* ptr, int sz)
{}
void test(int arr[],int sz)
{}
int main()
{
//1.
int a = 10;
test(&a);
//2.
int arr[10] = { 0 };
test(arr);
return 0;
}
- 一级指针传参,形参用指针和数组都行,但不提倡用一维数组。
- 若形参为指针,实参也可以是指针(地址),也可以是数组。
二级指针传参
当二级指针作参数时,形参如何设计呢?
void test(int** pp) {
printf("%d\n", **pp);
}
void test(int* arr[]) {//用法不好
printf("%d\n", *arr[0]);
}
int main() {
int a = 10;
int* p = &a;
int** pp = &p;
test(pp);
return 0;
}
- 当二级指针作函数参数时,形参可以是二级指针和指针数组。
当形参为二级指针,实参可以传什么呢?
void test(int** pp) {
printf("%d\n", **pp);
}
int main() {
int a = 10;
int* p = &a;
int** pp = &p;
int* arr[10] = { &a };
//1.
test(&p);
//2.
test(pp);
//3.
test(arr);
return 0;
}
- 当形参为二级指针时,实参可以是:二级指针(一级指针地址),指针数组首元素的地址。
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注的更多内容!
相关推荐:
优化公司:助力企业腾飞的秘密武器,微信营销推广价格多少
未来科技:AI工具为生活赋能,打造智能未来
SEO找词:如何精准找到高效关键词,提升排名和流量,河源网站优化平台
ChatGPT为什么访问不了了?了解背后的原因与解决方法,AI怎么拖入路径
为什么越来越多的人选择在知乎发布文章?这里面的机会你可能还没发现!,潍坊关键词排名提升
为什么seo这么麻烦,seo是什么意思 为什么要做seo ,dota1ai地图命令选ai
云推SEO:让您的网站在激烈竞争中脱颖而出,网站优化公司欢迎来电
SEO但是,这些常见误区你真的知道吗?,凤岗网站建设开发
seo网站排名关键词优化,seo网站关键词优化怎么做 ,ai回廊
SEO北京:数字时代,企业成功的关键,湖南网站建设湖南岚鸿
ChatGPT:引领人工智能对话新时代的智能助手,Ai shiang
SEO合作:让你的网站在搜索引擎中脱颖而出,惠州抖音seo策划公司
ChatGPT-01:开创人工智能新纪元,AI如何画模糊的云层
OpenPose大白话解释:让你轻松理解姿态识别的神奇技术,ai天天晴
wordpress seo是什么,wordpress建站seo好做吗 ,学习图文ai
ChatGPT免费版下载:智能对话助手带来的全新体验,电脑怎么下载Ai微认证
SEO数量-如何提升你的网站排名与流量?,射阳seo优化五星服务
优化综合:引领高效发展的智慧之道,电影营销的推广方式
SEO与SEM:谁才是提升网站流量的王者?,Ai中字体如何变形立体
SEO提供:如何通过精准的SEO策略提升网站流量与品牌影响力,刷关键词排名立的火星
SEO刷:让你的网站一夜之间登顶搜索引擎!,独特seo技巧
zblog站群,zblog怎么样 ,欧卡2ai汽车如何使用
为什么关键词太少会影响你的网络营销效果?,陕西seo网站推广工具
seo的推广工具,seo推广软件哪个好 ,国内ai写作论文怎么样
seo需要了解什么,seo需要学些什么内容 ,ovo ai
怎么用AI生成文章免费版,高效创作从此开始!
ChatGPT无法加载?检查您的网络设置并尝试重启,轻松解决连接问题!,ai制作艺术字
SEO添加:提升网站流量与排名的必备策略,seo团队成员中国人
OpenAI无法验证支付方式?解决方案与常见问题解析,你好月光ai
SEO优化全攻略提升网站排名的关键步骤与未来趋势,这是什么新晋动画ai
OpenAI银行卡扣款的公司是哪家?揭秘背后的支付流程与安全保障,AI素描相片
ChatGPT付款被拒?如何应对与解决常见支付问题,掉包ai
“更加通顺”-让生活与工作无缝衔接的语言魅力,SEO书架书桌收纳
AI免费生成:释放创造力的秘密武器
为什么选择SEO会员服务,让您的网站流量飞速增长,靖边专业网站建设公司
ChatGPT怎么找梯子:突破网络限制,轻松访问AI助手的终极指南,鬼灭之刃人物AI还原
ChatGPT连了外网也登不了?如何解决这一问题,重新畅享AI助力!,ai少女大瓜
ChatGPT198元永久会员,开启智慧之门,体验AI的极致服务!,老孙教ai
AI网页版本:开启智能时代的新篇章,拼音标调ai
SEO可以改变你的商业未来:如何通过优化提升网站流量和转化率,五粮液营销推广
ChatGPT无法加载?检查您的网络设置并尝试重启ChatGPT,助您畅享无障碍智能对话体验,ai记录人
SEO要点:提升网站排名的核心技巧与策略,福田市网站建设推广费用
文字生成AI:开启创意写作的新纪元
SEO攻略:搜索引擎优化,快速提升网站排名,网站推广网站优化费用
未来的效率利器AI软件下载AI,助您轻松驾驭智能世界
为什么“未备案域名”会成为互联网行业中的重要问题?,江干区seo优化价格
ChatGPT不能加载过去的对话,如何提升你的使用体验?,ai智能衣服
ChatGPT+维护页面:您的智能助手之旅,安全、高效、无忧,奥特曼画图ai
ChatGPT服务部分恢复:人工智能助力全新体验,ai对象菜单
ChatGPT网页版内容显示不全的原因与解决方案,ai超级绘