鹏哥C语言81-82---指针和数组+二级指针+指针数组

devtools/2024/10/23 23:35:21/

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>

//--------------------------------------------------------------------------------------------------------5. 指针和数组
数组:一组相同类型元素的集合
指针变量:是一个变量,存放的是地址

int main()
{int arr[10] = { 1,2,3,4,5, 6,7,8,9,0 };//arr 数组名是首元素地址(两种例外)//&arr[0] 也是首元素地址printf("%p\n", arr);printf("%p\n", &arr[0]);//通过指针访问数组int* p = arr;int sz = sizeof(arr) / sizeof(arr[0]);int i = 0;for (i = 0; i < sz; i++){printf("%d ", *(p + i)); //p指向第一个元素,每次让他+1,因为是int* 类型的指针变量,所以+1一次,跳过4个字节,指向下一个元素}printf("\n");for (i = 0; i < sz; i++){printf("%p---------%p\n", &arr[i], p + i);//验证了地址完全相同}return 0;
}

//函数--数组--指针

test(int* arr, int sz)
{int i = 0;for (i = 0; i < sz; i++){printf("%d ", *(arr + i));}
}int main()
{int arr[10] = { 1,2,3,4,5, 6,7,8,9,0 };int sz = sizeof(arr) / sizeof(arr[0]);test(arr, sz);}

//-----------------------------------------------------------------------------------------------------6. 二级指针
指针变量也是变量,是变量就有地址,那指针变量的地址存放在哪里?
这就是 二级指针 

int main()
{int a = 10;int* pa = &a; // pa 是一个指针变量,一级指针变量// int 表示 pa 指向的对象的类型是 int 类型//  * 表示 pa 是指针变量*pa = 20;printf("%d\n", a); //20int** ppa = &pa; // 二级指针,存放 pa 的地址// int* 代表 ppa 指向的对象的类型是 int*//      * 代表 ppa是指针变量//  *ppa; //pa//  **ppa; //a**ppa = 30;printf("%d\n", a); //30return 0;
}

//总结:二级指针变量 是用来   存放一级指针变量的地址   的//------------------------------------------------------------------------------------------------------7. 指针数组
存放指针的数组,就是指针数组
主语是数组

int main()
{int a = 10;int b = 20;int c = 30;//int arr[10] = { 0 };//int* pa = &a;//int* pb = &b;//int* pc = &c;//parr 存放指针的数组,就是指针数组int* parr[] = {&a, &b, &c};int sz = sizeof(parr) / sizeof(parr[0]); int i = 0;for (i = 0; i < sz; i++){printf("%d ", *(parr[i]));}return 0;
}

//指针数组模拟二维数组

int main()
{int arr[3][4] = { 1,2,3,4,2,3,4,5,3,4,5,6 };// 1 2 3 4// 2 3 4 5// 3 4 5 6int i = 0;int j = 0;//标准的二维数组打印for (i = 0; i < 3; i++){for (j = 0; j < 4; j++){printf("%d ", arr[i][j]);}printf("\n");}printf("\n");//指针数组 模拟二维数组int arr1[4] = { 1,2,3,4 };int arr2[4] = { 2,3,4,5 };int arr3[4] = { 3,4,5,6 };int* parr[3] = { arr1,arr2,arr3 };int x = 0;int y = 0;for (x = 0; x < 3; x++){for(y=0;y<4;y++){printf("%d ", parr[x][y]);}printf("\n");}return 0;
}


http://www.ppmy.cn/devtools/128293.html

相关文章

几何算法系列:空间实体体积计算公式推导

1.前言 面积和体积的计算是常见和基础的几何算法话题&#xff0c;面积和体积通常作为面或构件的基本信息参与相关的建模、计算、分析等过程。 有关面积的计算&#xff0c;可以参考博主此前的文章&#xff0c; 一种误差较小的轮廓面积计算算法_轮廓面积计算原理-CSDN博客文章…

如何高效解锁业务数据价值:多云时代应该怎么构建新一代数据平台架构

本文是“2021 InfoQ 年度技术盘点与展望”系列文章之一&#xff0c;由 InfoQ 编辑部制作呈现&#xff0c;重点聚焦大数据领域在 2021 年的重要进展、动态&#xff0c;希望能帮助你准确把握 2021 年大数据领域的核心发展脉络&#xff0c;在行业内始终保持足够的技术敏锐度。 “I…

养老院网站毕设计算机毕业设计基于SpringBootSSM框架

目录 1.概述 2.设计思路 2.1 开发背景 2.2 项目需求 3. 需求分析 3.1‌用户需求分析‌ 3.2‌功能需求‌ 3.3非功能需求‌ 4. 数据库设计 1.概述 本文旨在设计并实现一个功能全面、用户友好的养老院网站&#xff0c;以提供养老院管理、老人信息管理、服务预约与跟踪等…

现今 CSS3 最强二维布局系统 Grid 网格布局

深入学习 CSS3 目前最强大的布局系统 Grid 网格布局 Grid 网格布局的基本认识 Grid 网格布局: Grid 布局是一个基于网格的二位布局系统&#xff0c;是目前 CSS 最强的布局系统&#xff0c;它可以同时对列和行进行处理&#xff08;它将网页划分成一个个网格&#xff0c;可以任…

未来啥样?细思极恐

让我们一起畅想AI给我们带来的巨大便利吧&#xff0c; 立个flag&#xff0c;后续我们来见证是否语言成真&#xff01; 一&#xff1a;机器人代替了传统家用电器成了家庭必备 小汽车、机器人将来是家庭必备了&#xff0c;家庭机器人可以陪护老人&#xff0c;陪护孩子&#xff0…

Tongweb7049m4+THS6010-6012版本 传真实ip到后端(by yjm+lwq)

遇到客户需要通过ths传真实ip到后端也就是部署到tongweb的需求&#xff0c;在ths的httpserver.conf里的location块配置了以下内容&#xff1a; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwar…

基于SpringBoot+Vue+MySQL的智慧博物馆管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着信息技术的飞速发展&#xff0c;智慧化已成为博物馆发展的新趋势。然而&#xff0c;当前许多博物馆仍面临着预约困难、参观体验不佳等问题&#xff0c;严重影响了博物馆的服务质量和公众形象。传统的预约和票务管理方式已难…

一站式讲解Wireshark网络抓包分析的若干场景、过滤条件及分析方法

目录 1、软件为什么会出现各式各样的网络问题? 2、Wireshark抓包工具与tcpdump命令 3、典型的网络场景下如何抓包 3.1、网卡 3.2、集线器 3.3、交换机 3.4、路由器 3.5、加密机 3.6、防火墙 4、Wireshark简要介绍 5、Wireshark过滤条件说明 6、结合常用协议进行分…