当前位置: 首页 > news >正文

指针高级(2)

6.数组指针

#include <stdio.h>
int main()
{/*练习:利用指针遍历数组*///1.定义数组int arr[] = { 10,20,30,40,50 };int len = sizeof(arr) / sizeof(int);//2.获取数组的指针//实际上获取的:数组的首地址int* p1 = arr;int* p2 = &arr[0];printf("%d\n", *p1);printf("%d\n", *(p1 + 1));//要是不加( ),相当于先获取到10,再拿着10+1,结果是11//改进:利用循环和指针遍历数组获取里面的每一个元素for (int i = 0; i < len; i++){printf("%d\n", *p1);p1++;//或者改成printf("%d\n",*p1++);}return 0;
}

7.数组指针 的细节

笔记

代码

#include<stdio.h>
int main()
{//1.定义数组int arr[] = { 1,2,3,4,5,6,7,8,9,10 };//2.sizeof运算的时候,不会退化,arr还是整体printf("%zu\n", sizeof(arr));//40//3.&arr获取地址的时候,不会退化,记录的内存地址第一个元素的首地址,也是数组的首地址,步长:数据类型*数组的长度 40//arr参与计算的时候,也会退化为第一个元素的指针,记录的内存地址是第一个元素的首地址,也是数组的首地址,步长:数据类型 int 4printf("%p\n", arr);printf("%p\n", &arr);printf("%p\n", arr + 1);printf("%p\n", &arr + 1);return 0;}

8.利用索引遍历第一种

笔记

代码

#include<stdio.h>
int main()
{//遍历:利用索引就行遍历 / 利用指针进行遍历//1.定义一个二维数组int arr[3][5] ={{1,2,3,4,5},{ 11, 22, 33, 44, 55 },{ 111,222,333,444,555 }};//2.利用索引的方式进行遍历//arr[0]:表示二维数组当中的第一个一维数组,//arr[1]:表示二维数组当中的第二个一维数组,//arr[2]:表示二维数组当中的第三个一维数组for (int i = 0; i < 3; i++){//i:依次表示二维数组中的索引for (int j = 0; j < 5; j++){//j:依次表示一维数组中的索引//内循环:遍历每一个一维数组printf("%d ", arr[i][j]);}//当内循环结束之后,表示一位数组遍历完毕了printf("\n");}return 0;}

9.利用索引遍历第二种

#include <stdio.h>
int main()
{//1.定义三个一维数组int arr1[3] = { 1,2,3 };int arr2[5] = { 1,2,3,4,5};int arr3[9] = { 1,2,3,4,5,6,7,8,9 };//预先计算每一个数组的真实长度int len1 = sizeof(arr1) / sizeof(int);int len2 = sizeof(arr2) / sizeof(int);int len3 = sizeof(arr3) / sizeof(int);//再定义一个数组,装所有数组的长度int lenArr[3] = { len1,len2,len3 };//把三个一维数组放入到二维数组当中//数组的数据类型,跟内部存储的元素类型保持一致//arr1:使用数组名进行计算的时候,退化为指向第一个元素的指针,此时不再表示数组的那个整体了//指针----内存地址  64位win  8个字节int* arr[3] = { arr1,arr2,arr3 };//利用索引遍历arrfor (int i = 0; i < 3;i++){//i.依次表示二维数组的索引 0 1 2for (int j = 0; j < lenArr[i]; j++){printf("%d", arr[i][j]);}printf("\n");}return 0;}

10.利用指针遍历第一种

笔记

代码

#include <stdio.h>
int main()
{/*二维数组利用指针遍历二维数组*///1.定义一个二维数组int arr[3][5] ={{1,2,3,4,5},{11,22,33,44,55},{111,222,333,444,555}};//2.利用指针遍历二维数组//获取二维数组的指针//数组指针的数据类型:要跟数组内部元素的类型保持一致//二维数组里面存储的是一维数组int[5]int(*p)[5] = arr;for (int i = 0; i < 3; i++){//遍历一遍数组for (int j = 0; j < 5; j++){printf("%d ", *(*p + j));}//换行printf("\n");//移动二维数组的指针,继续遍历下一个一维数组p++;}
}
http://www.dtcms.com/a/365595.html

相关文章:

  • 当3D高斯泼溅遇见视频孪生:城市治理的“科幻“时代来了
  • 数据结构---选择排序
  • 【项目】分布式Json-RPC框架 - 应用层实现
  • 【Linux】网络(中)
  • 机器视觉opencv总结
  • 毕业项目推荐:74-基于yolov8/yolov5/yolo11的垃圾桶垃圾溢出检测识别系统(Python+卷积神经网络)
  • AssetStudio解包Unity游戏资源
  • HarmonyOS学习
  • 搞定鸿蒙新手 3 大痛点:页面跳转实现、应用标识修改与 Hyper-V 启动故障排查
  • 残差连接的概念与作用
  • HTML第九课:HTML5新增标签
  • Strapi 富文本内容转 HTML 页面显示:基于 marked.js 的完整实现方案
  • 【C语言】深入理解C语言内存操作函数:memcpy、memmove、memset与memcmp
  • Directus本地搭建遇到的问题及解决方案
  • 基于51单片机音乐喷泉设计频谱彩灯音乐盒播放器
  • gdb调试死锁
  • 安卓APP上架之安卓App备案的三要素:包名、公钥与MD5签名的深度解析-优雅草卓伊凡
  • Java设计模式之创建型—建造者模式
  • 零基础学英语APP推荐:一个程序员的亲测有效逆袭攻略
  • 普通人也能走的自由之路
  • 限流、降级、熔断的区别和应用场景
  • 9月3日星期三今日早报简报微语报早读
  • 多路复用 I/O 函数——`select`函数
  • SystemServer 启动流程
  • EDVAC:现代计算机体系的奠基之作
  • 影像服务免费方案:GIS Server让GeoTIFF数据在山海鲸中直观呈现
  • PyTorch实战——ResNet与DenseNet详解
  • 关于嵌入式学习——嵌入式硬件2
  • Mac电脑Tomcat+Java项目中 代码更新但8080端口内容没有更新
  • 打破信息洪流:微算法科技(NASDAQ:MLGO)推出一种移动互联网环境下数字媒体热点挖掘算法