本文将介绍几个打印数组内容的方法,其中会涉及到指针的应用,方便加深大家对指针的理解。

int main()
{int arr[10] = {1,2,3,4,5,6,7,8,9,10};int sz = sizeof(arr) / sizeof(arr[0]);//print1(arr, sz);//print2(arr, sz);//打印arr数组的内容//print3(&arr, sz);return 0;
}

首先我们创建一个数组,然后使用编写不同的函数来实现打印数组的不同方法。

方法1:也是我们最常见的方法,直接在函数参数中使用数组

void print1(int arr[], int sz)
{int i = 0;for (i = 0; i < sz; i++){printf("%d ", arr[i]);}
}

方法2:原理跟方法1一样,但这次函数参数我们使用指针,将数组首元素地址传过去

void print2(int* arr, int sz)
{int i = 0;for (i = 0; i < sz; i++){printf("%d ", *(arr + i));}
}

方法3:使用数组指针的方式,我们将整个数组地址存在一个数组指针中,将整个数组地址作为参数调用,注意!!在此方式中我们也可以有不同的方法来打印数组

void print3(int (*parr)[10], int sz)
{//*(parr + 0);//parr[0]+int i = 0;for (i = 0; i < sz; i++){//printf("%d ", parr[0][i]);//printf("%d ", (*(parr + 0))[i]);printf("%d ", (*parr)[i]);//(*parr) 相当于 parr指向的数组的数组名}
}

进阶

我们尝试使用不同方法来打印二维数组,同样的我们先创建一个二维数组,再在不同函数中实现不同方法打印数组。

int main()
{int arr[3][5] = { 1,2,3,4,5, 2,3,4,5,6,3,4,5,6,7 };print1(arr, 3, 5);print2(arr, 3, 5);return 0;
}

方法1:跟传统方法一样,我们在形式参数中使用一个二维数组

void print1(int arr[3][5], int r, int c)
{int i = 0;for (i = 0; i < r; i++){int j = 0;for (j = 0; j < c; j++){printf("%d ", arr[i][j]);}printf("\n");}
}

方法2:我们使用数组指针的方式,将数组首元素地址传给int (*p)[5],形成一个二维数组

void print2(int(*p)[5], int r, int c)
{int i = 0;for (i = 0; i < r; i++){int j = 0;for (j = 0; j < c; j++){//printf("%d ", *(*(p + i) + j));printf("%d ", p[i][j]);}printf("\n");}
}

本文到此结束,感谢大家的阅读,欢迎点赞评论互关,祝大家万事如意。

《C语言进阶》使用指针花式打印数组内容相关推荐

  1. c语言智力题 操作符详解例题 数据存储 指针初阶 水仙花数 杨辉三角 逆序字符串 喝汽水问题 打印图形 猜凶手 使用指针打印数组内容 调整奇数偶数顺序 运动员猜名次

    [题目名称] 下面代码的结果是:a #include <stdio.h> int i; int main() {i--; //sizeof'的返回值是无符号整型if (i > siz ...

  2. 【C语言】指针表达进阶:指针在一维数组、二维数组的应用(如何用指针表达一维数组、二维数组的元素的地址、元素值)

    指针可以替代数组名 1.在一维数组中:int a[9]; int *p=a; 一维数组名指向的是列!(后面总结,迷得话不用慌) 则想要获取a[i]的地址方法:a+i; .p+i; .p[i]; 获取a ...

  3. 【C语言进阶】指针(进阶2)

    目录 回顾: 数组参数.指针参数 一维数组传参 二维参数传参 一级指针传参 二级指针传参 回顾: 前面关于指针的内容我们已经学习了指针数组和数组指针我们来一起看看下面的代码的意思 int arr[5] ...

  4. 【C语言-进阶】指针进阶(2)

    继上一篇的数组指针,简单描述:数组指针就是指向数组的指针,二维数组传参时,传递的是第一个一维数组的地址,所以可以用指向一维数组的指针来接收. 1:整型数组 2:整型指针的数组 3.数组指针,所指向的数 ...

  5. 数组做参数_C语言进阶之路:函数—数组参数!

    数组参数属于指针参数. 指针参数即时传址参数(或叫引用参数), 如果想在函数中修改参数的值, 这是唯一的途径. 如果把数组当作参数, 不管你愿意与否, 它就是指针, 指向第一个值的指针. 1. 数组参 ...

  6. C语言进阶——函数指针

    作者:敲代码の流川枫 博客主页:流川枫的博客 专栏:C语言从入门到进阶 语录:Stay hungry stay foolish 工欲善其事必先利其器,给大家介绍一款超牛的斩获大厂offer利器--牛客 ...

  7. 【C语言进阶】指针 下

    目录 1.回调函数 1.1.回调函数的概念 1.2.回调函数的使用 1.2.1.   案例一: 1.2.2.案例二: 1.3.qsort函数 1.3.1.qsort函数介绍 1.3.2. qsort函 ...

  8. 【C语言进阶】指针编程题—字符串翻转

    目录 写在前面 正文 练习一:左旋字符串 练习二:字符串旋转异同判断 练习三:杨氏矩阵 写在最后 写在前面 这是有关指针的大题 正文 练习一:左旋字符串 题目要求:实现一个函数,可以左旋字符串中的K个 ...

  9. java打印数组_Java中打印数组内容的方式有哪些?

    下面是几种常见的打印方式. 方法一:使用循环打印. public class Demo { public static void main(String[] args) { String[] info ...

最新文章

  1. 传感器融合带来多重好处
  2. Yahoo 拒绝 Microsoft 的收购请求
  3. 思源高拍仪万能驱动_动态展示和教学 良田YL1050AF高拍仪评测
  4. Invalid Gradle JDK configuration found_带你了解Gradle编译速度是如何提升70%的
  5. Java数据库篇2——数据库基本操作
  6. 【Java】Object转换为String的三种策略总结
  7. UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128)
  8. qt实现百度首页(仅界面,功能未实现)
  9. web全栈工程师进阶学习线路图
  10. c语言函数实现数组输入输出
  11. JavaFX Scene Builder的使用
  12. 对索引存储与散列存储的一些形而上的思考
  13. 苹果高管参与直播,或将发布新品
  14. Kodu吃苹果---Kodu少儿编程第六天
  15. 论文阅读: [3d]Audio-driven Talking Face Video Generation with Learning-based Personalized Head Pose
  16. 【码农学编曲】Cubase乐器轨音频轨各种轨没声音的终极解决方案
  17. -eq、-ne、-gt、-ge、-lt、-le英文意思
  18. java tolist_java – Collectors.toList()返回什么类型的List?
  19. PTA-L1-088 静静的推荐(C++)
  20. 汽车理论课后习题matlab程序,汽车理论课后作业matlab编程详解(带注释).doc

热门文章

  1. dijkstra算法证明
  2. 微服务2.0技术栈选型手册
  3. OpenGL-顶点数组 缓冲区
  4. LiveGBS GB28181流媒体服务
  5. Android插件化主流框架和实现原理
  6. 初识Reactjs的项目结构与思想
  7. 传奇服务器脚本文件在哪里,传奇NPC配置文件与脚本文件的关联
  8. Mesos已死,容器永生
  9. crackme160 Acid_burn.exe
  10. AutoLuminous4.zip下载