当前位置: 首页 > 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.xdnf.cn/news/1443997.html

相关文章:

  • Spring Boot HTTP状态码详解
  • 关于linux数据库编程——sqlite3
  • Spring二级缓存为什么不行(详细)
  • Docker学习笔记(一):容器基础、生态与安装实践
  • 鸿蒙NEXT开发实战:图片显示、几何图形与自定义绘制详解
  • 编辑器vim(Linux)
  • 【Python接口自动化】调用飞书机器人
  • 树莓派 AT 指令串口助手
  • Mysql学习第五天 Innodb底层原理与Mysql日志机制深入剖析
  • K8s生产级Redis集群:Operator模式实现自动扩缩容 详细内容
  • 稳居全球TOP3:鹏辉能源“3+N” 布局,100Ah/50Ah等户储电芯产品筑牢市场优势
  • 域内的权限提升
  • 计算机网络模型总概述
  • 从检索的角度聊聊数据结构的演进​
  • 基于springboot的在线答题练习系统
  • 【vulhub】thinkphp漏洞系列
  • Java设计模式之结构型—适配器模式
  • 需求调研的核心目标
  • 并发编程——14 线程池参数动态化
  • 前端自动化打包服务器无法安装高版本 Node.js v22 问题解决
  • 京东商品评论API接口概述,json数据返回
  • 51单片机:发光二极管与动态数码管控制
  • 迅为RK3568开发板体验OpenHarmony—烧写镜像-安装驱动
  • dumpsys alarm 简介
  • 关于kafka:consumer_offsets日志不能自动清理,设置自动清理规则
  • Trae x Vizro:低代码构建专业数据可视化仪表板的高效方案
  • 小迪web自用笔记25
  • 年成本下降超80%,银行数据治理与自动化应用实录
  • DS1202示波器的使用教程笔记
  • 【C++八股文】数据结构篇