指针-数组传参,指针传参
目录
数组传参
一维数组
二维数组
指针传参
一级指针
二级指针
一个特殊的二级指针
数组传参
一维数组
我们把传入一维数组时输入的是数组名,数组名是一个指向首元素的指针
那么在函数接收时,只需要保证传入地址的类型相同即可
#include<stdio.h>void test(int arr[]) {} //int arr[] 可以看成int *arr
void test1(int arr[10]){} //传入的是指向首元素的地址,和[]内的值无关
void test2(int* arr){} //一个int*类型的指针int main(void) {int arr[10] = { 0 };test(arr); //将arr看成指针,指向第一个元素,类型是int*test1(arr); test2(arr);return 0;
}
二维数组
我们传入二维数组时输入的也是数组名,数组名是一个指向首元素的地址,但这里首元素看成一个一维数组
int arr[3][5] = { {1,2,3,4,5}, //首元素 arr表示的是该一维数组的地址{2,3,4,5,6}, //第二个元素{3,4,5,6,7} //第三个元素};
同样将arr看成一个指针,是一个指向数组的指针,也就是数组指针,类型为int(*)[5]。
那么在函数接收时,只需要保证传入地址的类型相同即可
#include<stdio.h>void test(int arr[3][5]) {} //int arr[][5] 可以看成int(*)[5]
void test1(int arr[][5]) {} //传入的是指向首元素(数组)的地址,和第一个[]内的值无关
void test2(int(*arr)[5]) {} //*arr=arr[0],*(arr+i)=arr[i] //*(arr[i]+j)=arr[i][j]//*(*(arr+i)+j)=arr[i][j] //关于[]的作用可以看之前数组指针那篇int main(void) {int arr[3][5] = { {1,2,3,4,5}, //首元素 arr表示的是该一维数组的地址{2,3,4,5,6}, //第二个元素{3,4,5,6,7} //第三个元素};test(arr); //将arr看成指针,指向第一个元素(数组),类型是int(*)[5]test1(arr); test2(arr);return 0;
}
指针传参
一级指针
一级指针传入函数时是传地址,也就是指针,接收时只要类型相同即可。
#include<stdio.h>void test(int* p) {} //二者都是int*类型的指针
void test1(int p[]) {}void test2(char* p) {} //二者都是char*类型的指针
void test3(char p[]) {}int main(void) {int a = 10;int* p = &a;test(p);test1(&a);char b = 'w';char* p1 = &b;test2(p1); test3(&b);return 0;
}
二级指针
函数接收的时候是一个二级指针,参数类型是二级指针即可,只要是元素往上两级的地址都行。
void test(int** p) {} //int**类型int a = 0;int* p = &a;int** p1 = &p;test(&p); //指针往下两级是一个元素或空都行test(p1);
一个特殊的二级指针
之前在数组指针里有说到过,可以把数组指针看成一个特殊的二级指针,其二级和一级的值相同。
#include<stdio.h>void test(int** p) {}
void test1(int(*p)[]){} //这里的10正常应该加上,这里为了演示二级指针特性没有加int main(void) {int arr[10] = { 0 };int(*p)[10] = &arr;test(&arr);test(p);test1(&arr);test1(p);return 0;
}
指针-数组传参,指针传参相关推荐
- 【C语言指针】 指针+-整数、指针-指针、解引用、指针数组、二级指针、结构体声明、初始化、传参
目录 一.指针 1.指针是什么 1.1.一个单元1个字节 2.指针和指针类型 2.1.指针类型的意义 ① 解引用 ② + -整数 例:把每个整形里放1 每个字节里放1 总结: 3.野指针 3.1.野指 ...
- C语言指针(函数指针数组,二级指针)
int (*p[num])( char*,int,int );int (*(*p)[num])(int a); 上一篇博客最后的两个例子的答案分别是:函数指针数组,函数指针数组的指针. 函数指针数组指 ...
- 指针难点——数组指针、指针数组、函数指针、指针函数详解
指针难点 1.指针 1.1指针数组和数组指针 2.右左法则 3.函数指针和指针函数 示例1 示例2 示例3(面试题) 1.指针 1.1指针数组和数组指针 指针数组是一个数组,数组里面存放的内容是指针 ...
- 【C语言】函数指针、函数指针数组、函数指针数组的指针
一.函数指针 1.定义理解 函数指针:是一个指针,存放函数地址的指针. 函数的地址可以通过取地址函数名拿到,也可以通过函数名直接拿到. 2.函数指针 (1)定义一个函数test void test(c ...
- C语言指针数组,数组指针,函数指针,函数指针数组,函数指针数组的指针,回调函数
C语言指针的一些知识点 指针 指针数组和数组指针的概念 函数指针,函数指针数组,函数指针数组的指针 回调函数 指针 1.指向对象的指针 int *p = new int(10); delete p; ...
- 函数指针、函数指针数组,函数指针数组的指针
数组指针 概念:数组指针是指针,只要是指针他就占4个字节: 例如: 整形指针:int *p;能够指向整形数据的指针 浮点型指针:float *p;能够指向浮点型的数据的指针 那么数组指针,同样的理解就 ...
- 【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)
相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...
- 关于C语言中的数组指针、指针数组以及二级指针
概念解释 数组指针:首先它是一个指针,它指向一个数组,即指向数组的指针:在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道.数组指针指向的是数组中的一个具体元素,而不是整个数组,所 ...
- 数组指针和指针数组,函数指针和指针函数,常量指针和指针常量,常量引用
一.数组指针和指针数组 1.数组指针(行指针) 首先要知道数组指针是指向数组的指针.所以数组指针本质是个指针,只不过指向一个数组而已.格式为:T (*ptr)[]. 注意:"[]" ...
- delphi7存储过程传入数组_C++中的指针、数组指针与指针数组、函数指针与指针函数...
本文从初学者的角度,深入浅出地详解什么是指针.如何使用指针.如何定义指针.如何定义数组指针和函数指针,并给出对应的实例演示:接着,区别了数组指针与指针数组.函数指针与指针函数:最后,对最常混淆的引用传 ...
最新文章
- 文档相似度之doc2vec、文档聚类
- 电脑账户头像怎么删掉_情侣头像丨情侣头像一男一女背影
- 【less-24】基于SQLI的二次注入
- SpringSecurity应用(一)
- [转载] New Concept English 1——Lesson 8 What's your job?
- 每周一刷——从斐波那契数列到动态规划
- Oracle EBS之把自定义concurrent加入Pick Release Document Set(All Pick Release Documents)的几个注意点...
- EasyUI treegrid 获取编辑状态中某字段的值 [getEditor方法获取不到editor]
- 奔腾4 2.4CPU计算机硬件能升级吗,CPU怎么升级啊
- Xgboost中特征重要性计算方法详解
- 名片设计尺寸及注意事项(详尽),附加:文字转曲线或外框字;网址、文字转二维码方法
- 【C语言】输出100内素数
- Android Binder机制
- 【有利可图网】PS实战系列:简单易学的PS把照片转素描效果
- [转]爱因斯坦·毕加索——空间、时间和动人心魄之美
- 关于SD卡原理图和实际封装区别的探索
- Hanselminutes播客242-与Pete Brown的远程工作者的困境
- 养老服务机构引入电子签章推动养老合同在线签
- 2020年G2电站锅炉司炉复审考试及G2电站锅炉司炉证考试
- linux redis查看密码,Redis集群设置密码和查看密码方法
热门文章
- 算法导论之字符串匹配
- mark关于Java语言Static的生命周期
- 数据结构源码笔记(C语言):链接栈
- c3p0 参数 模糊查询_mybatis之动态sql,模糊查询,结果集处理,mybatis分页及特殊字符处理...
- PyQt5 技术篇-QTableWidget表格组件的行选择与列选择实例演示,表格组件的双击事件捕获,获取表格选中单元格的值
- Pywinauto 应用后端类型选择错误:AttributeError: ‘NoneType‘ object has no attribute ‘backend‘. 原因及解决办法
- Markdown设置字体大小、颜色...,CSDN博客编写设置字体大小、颜色、粗细。字体,文字背景设置。
- matlab中的square函数
- hdu 2602 01背包入门
- MATLAB 中怎么求图像在水平方向和垂直方向的像素和,用图表示