目录

数组传参

一维数组

二维数组

指针传参

一级指针

二级指针

一个特殊的二级指针


数组传参

一维数组

我们把传入一维数组时输入的是数组名,数组名是一个指向首元素的指针

那么在函数接收时,只需要保证传入地址的类型相同即可

#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;
}

指针-数组传参,指针传参相关推荐

  1. 【C语言指针】 指针+-整数、指针-指针、解引用、指针数组、二级指针、结构体声明、初始化、传参

    目录 一.指针 1.指针是什么 1.1.一个单元1个字节 2.指针和指针类型 2.1.指针类型的意义 ① 解引用 ② + -整数 例:把每个整形里放1 每个字节里放1 总结: 3.野指针 3.1.野指 ...

  2. C语言指针(函数指针数组,二级指针)

    int (*p[num])( char*,int,int );int (*(*p)[num])(int a); 上一篇博客最后的两个例子的答案分别是:函数指针数组,函数指针数组的指针. 函数指针数组指 ...

  3. 指针难点——数组指针、指针数组、函数指针、指针函数详解

    指针难点 1.指针 1.1指针数组和数组指针 2.右左法则 3.函数指针和指针函数 示例1 示例2 示例3(面试题) 1.指针 1.1指针数组和数组指针 指针数组是一个数组,数组里面存放的内容是指针 ...

  4. 【C语言】函数指针、函数指针数组、函数指针数组的指针

    一.函数指针 1.定义理解 函数指针:是一个指针,存放函数地址的指针. 函数的地址可以通过取地址函数名拿到,也可以通过函数名直接拿到. 2.函数指针 (1)定义一个函数test void test(c ...

  5. C语言指针数组,数组指针,函数指针,函数指针数组,函数指针数组的指针,回调函数

    C语言指针的一些知识点 指针 指针数组和数组指针的概念 函数指针,函数指针数组,函数指针数组的指针 回调函数 指针 1.指向对象的指针 int *p = new int(10); delete p; ...

  6. 函数指针、函数指针数组,函数指针数组的指针

    数组指针 概念:数组指针是指针,只要是指针他就占4个字节: 例如: 整形指针:int *p;能够指向整形数据的指针 浮点型指针:float *p;能够指向浮点型的数据的指针 那么数组指针,同样的理解就 ...

  7. 【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

  8. 关于C语言中的数组指针、指针数组以及二级指针

    概念解释 数组指针:首先它是一个指针,它指向一个数组,即指向数组的指针:在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道.数组指针指向的是数组中的一个具体元素,而不是整个数组,所 ...

  9. 数组指针和指针数组,函数指针和指针函数,常量指针和指针常量,常量引用

    一.数组指针和指针数组 1.数组指针(行指针) 首先要知道数组指针是指向数组的指针.所以数组指针本质是个指针,只不过指向一个数组而已.格式为:T (*ptr)[]. 注意:"[]" ...

  10. delphi7存储过程传入数组_C++中的指针、数组指针与指针数组、函数指针与指针函数...

    本文从初学者的角度,深入浅出地详解什么是指针.如何使用指针.如何定义指针.如何定义数组指针和函数指针,并给出对应的实例演示:接着,区别了数组指针与指针数组.函数指针与指针函数:最后,对最常混淆的引用传 ...

最新文章

  1. 文档相似度之doc2vec、文档聚类
  2. 电脑账户头像怎么删掉_情侣头像丨情侣头像一男一女背影
  3. 【less-24】基于SQLI的二次注入
  4. SpringSecurity应用(一)
  5. [转载] New Concept English 1——Lesson 8 What's your job?
  6. 每周一刷——从斐波那契数列到动态规划
  7. Oracle EBS之把自定义concurrent加入Pick Release Document Set(All Pick Release Documents)的几个注意点...
  8. EasyUI treegrid 获取编辑状态中某字段的值 [getEditor方法获取不到editor]
  9. 奔腾4 2.4CPU计算机硬件能升级吗,CPU怎么升级啊
  10. Xgboost中特征重要性计算方法详解
  11. 名片设计尺寸及注意事项(详尽),附加:文字转曲线或外框字;网址、文字转二维码方法
  12. 【C语言】输出100内素数
  13. Android Binder机制
  14. 【有利可图网】PS实战系列:简单易学的PS把照片转素描效果
  15. [转]爱因斯坦·毕加索——空间、时间和动人心魄之美
  16. 关于SD卡原理图和实际封装区别的探索
  17. Hanselminutes播客242-与Pete Brown的远程工作者的困境
  18. 养老服务机构引入电子签章推动养老合同在线签
  19. 2020年G2电站锅炉司炉复审考试及G2电站锅炉司炉证考试
  20. linux redis查看密码,Redis集群设置密码和查看密码方法

热门文章

  1. 算法导论之字符串匹配
  2. mark关于Java语言Static的生命周期
  3. 数据结构源码笔记(C语言):链接栈
  4. c3p0 参数 模糊查询_mybatis之动态sql,模糊查询,结果集处理,mybatis分页及特殊字符处理...
  5. PyQt5 技术篇-QTableWidget表格组件的行选择与列选择实例演示,表格组件的双击事件捕获,获取表格选中单元格的值
  6. Pywinauto 应用后端类型选择错误:AttributeError: ‘NoneType‘ object has no attribute ‘backend‘. 原因及解决办法
  7. Markdown设置字体大小、颜色...,CSDN博客编写设置字体大小、颜色、粗细。字体,文字背景设置。
  8. matlab中的square函数
  9. hdu 2602 01背包入门
  10. MATLAB 中怎么求图像在水平方向和垂直方向的像素和,用图表示