C语言——指针——第2篇——(第20篇)

坚持就是胜利

文章目录

  • 一、指针和数组
  • 二、二级指针
    • 1、什么是 二级指针?
    • 2、二级指针 解引用
  • 三、指针数组
    • 模拟二维数组


一、指针和数组

问(1):指针和数组之间是什么关系呢?

答:指针变量就是指针变量,不是数组,指针变量的大小是4/8个字节,专门是用来存放地址的。
数组就是数组,不是指针,数组是一块连续的空间,可以存放1个或者多个类型相同的数据。

问(2):指针和数组之间是什么联系呢?

答:数组中,数组名其实是数组首元素的地址,数组名 == 地址 == 指针。
当我们知道数组首元素的地址的时候,因为数组又是连续存放的,所以通过指针就可以遍历访问数组。
数组是可以通过指针来访问的。

#include <stdio.h>int main()
{int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };int i = 0;int sz = sizeof(arr) / sizeof(arr[0]);for (i = 0; i < sz; i++){printf("%p\n", &arr[i]);}return 0;
}

在这里插入图片描述

#include <stdio.h>int main()
{int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };int* p = arr;int i = 0;int sz = sizeof(arr) / sizeof(arr[0]);printf("%d\n", arr[2]);printf("%d\n", p[2]);printf("%d\n", *(arr + 2));printf("%d\n", *(2 + arr));printf("%d\n", *(p + 2));printf("%d\n", *(2 + p));return 0;
}

在这里插入图片描述

二、二级指针

1、什么是 二级指针?

问:指针变量也是变量,是变量就有地址,那指针变量的地址存放在哪里呢?
答:这就是 二级指针。

#include <stdio.h>int main()
{int a = 10;int* p = &a;  //p 是一级指针变量,指针变量也是变量,变量是在内存中开辟空间的,是变量就有地址。int** pp = &p;   //pp 就是 二级指针,二级指针变量 就是用来存放 一级指针变量的地址int*** ppp = &pp;   //一样的分析方法return 0;
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、二级指针 解引用

*pp 相当于 p , *(*pp) 相当于 a

#include <stdio.h>int main()
{int a = 10;int* p = &a;int** pp = &p;*(*pp) = 20;   // *pp 相当于 p , *(*pp) 相当于 aprintf("a = %d\n", a);return 0;
}

在这里插入图片描述

#include <stdio.h>int main()
{char arr1[] = "abcdef";char arr2[] = "hello world";char arr3[] = "sunchao";char* parr[] = { arr1,arr2,arr3 };char** p = parr;return 0;
}

在这里插入图片描述

三、指针数组

问:指针数组是 指针 还是 数组 ?
答:是 数组。是存放指针的数组。

整型数组:存放整型的数组
字符数组:存放字符的数组
指针数组:存放指针(地址)的数组

#include <stdio.h>int main()
{char arr1[] = "abcdef";char arr2[] = "hello world";char arr3[] = "sunchao";char* parr[] = { arr1,arr2,arr3 };int i = 0;for (i = 0; i < 3; i++){printf("%s\n", parr[i]);}return 0;
}

在这里插入图片描述

模拟二维数组

和数组有本质的区别:请看图(数组是连续的存储空间,然而指针是在内存中开辟不同的存储空间)

在这里插入图片描述

在这里插入图片描述

#include <stdio.h>int main()
{int arr1[] = { 0,1,2,3,4 };int arr2[] = { 1,2,3,4,5 };int arr3[] = { 3,4,5,6,7 };int* parr[] = { arr1,arr2,arr3 };int i = 0;for (i = 0; i < 3; i++){int j = 0;for (j = 0; j < 5; j++){printf("%d ", parr[i][j]);}putchar('\n');}return 0;
}

在这里插入图片描述

微软雅黑字体
黑体
3号字
4号字
红色
绿色
蓝色

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/698260.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kotlin 中注解 @JvmOverloads 的作用

JvmOverloads 注解的作用就是&#xff1a;在有默认参数值的方法加上 JvmOverloads 注解&#xff0c;则 Kotlin 就会暴露多个重载方法。 例如&#xff0c;没有加注解&#xff0c;默认参数没有起到任何作用。 fun f(a: String, b: Int 0, c: String "abc") {}那相当…

多窗口编程

六、多窗口编程 QMessageBox消息对话框&#xff08;掌握&#xff09; QMessageBox继承自QDialog&#xff0c;显示一个模态对话框。用于用户前台信息通知或询问用户问题&#xff0c;并接收问题答案。 QDialog的Qt源码中&#xff0c;派生类往往都是一些在特定场合下使用的预设好的…

物麒平台长按持续音量+-实现方法

是否需要申请加入数字音频系统研究开发交流答疑群(课题组)&#xff1f;可加我微信hezkz17, 本群提供音频技术答疑服务&#xff0c;群赠送蓝牙音频&#xff0c;DSP音频项目核心开发资料, 1 问题 目前设置为长按音量-&#xff0c;但是默认的是单步加减方式(长按一次变化一格&a…

Leetcoder Day18| 二叉树 part07

语言&#xff1a;Java/Go 今天做了一个小决定&#xff0c;如果时间不够的话&#xff0c;可以先看go去找实习&#xff0c;所以现在加上用go去刷题 530.二叉搜索树的最小绝对差 给你一棵所有节点为非负值的二叉搜索树&#xff0c;请你计算树中任意两节点的差的绝对值的最小值。…

模方把工程换一个电脑,可以改工程读取的数据路径吗?

答&#xff1a;目前暂时还无法修改工程读取的数据路径。 模方是一款针对实景三维模型的冗余碎片、水面残缺、道路不平、标牌破损、纹理拉伸模糊等共性问题研发的实景三维模型修复编辑软件。模方4.1新增自动单体化建模功能&#xff0c;支持一键自动提取房屋结构&#xff0c;平均…

C#_扩展方法

简述&#xff1a; 扩展方法所属类必需是静态类&#xff08;类名依据规范通常为XXXExtension&#xff0c;XXX为被扩展类&#xff09;扩展方法必需是公有的静态方法扩展方法的首个参数由this修饰&#xff0c;参数类型为被扩展类型 示例&#xff1a; static class DoubleExtens…

敏捷项目管理在现代软件开发中的应用

在现代软件开发领域&#xff0c;项目管理起着至关重要的作用。随着技术的不断进步和市场需求的快速变化&#xff0c;传统的项目管理方法已逐渐无法满足软件开发的需求。因此&#xff0c;敏捷项目管理应运而生&#xff0c;成为许多软件开发团队的首选方法。本文将探讨敏捷项目管…

蓝桥杯刷题--python-11-前戳和,差分,二分

3956. 截断数组 - AcWing题库 n=int(input()) lis_num=list(map(int,input().split())) lis_num=[0]+lis_num for i in range (1,n+1): lis_num[i]=lis_num[i-1]+lis_num[i] if lis_num[n] % 3: print(0) else: res=0 cnt=0 for j in range (2,n): …

【深基12.例1】部分背包问题

题目描述 阿里巴巴走进了装满宝藏的藏宝洞。藏宝洞里面有 N ( N ≤ 100 ) N(N \le 100) N(N≤100) 堆金币&#xff0c;第 i i i 堆金币的总重量和总价值分别是 m i , v i ( 1 ≤ m i , v i ≤ 100 ) m_i,v_i(1\le m_i,v_i \le 100) mi​,vi​(1≤mi​,vi​≤100)。阿里巴巴…

【C++】STL中List的详细实现解析

文章目录 前言list 代码实现1. 构造函数和析构函数1.1 构造函数1.2析构函数 2.operator的重载 和 拷贝构造函数2.1 拷贝构造2.2 operator的重载 3. 迭代器的实现3.1 普通迭代器3.2 const迭代器 4. 插入和删除5. 测试代码总结 前言 在 C STL&#xff08;标准模板库&#xff09;…

【discuz x3.5】网站迁移记录

近期需要迁移一个discuz x3.5 论坛&#xff0c;记录一下迁移过程&#xff0c;以备用&#xff01; 1、在原网站后台-站长>数据库进行数据备份 2、在根目录打包网站所有文件 3、到官网下载一个跟网站版本相同的安装包 4、把新的安装包里的-install-安装文件夹覆盖到原网站…

mac命令行安装java

安装 sdkman sdkman 是java的一个版本管理的工具&#xff0c;比homebrew安装java更方便。可以安装多个版本的java sdkman 的安装命令如下 # 安装sdkman需要科学上网&#xff0c;先设置一下curl的代理&#xff0c;否则会因为网络原因安装失败 # 我用的clashX&#xff0c;代理…

在C语言中,设置Linux系统时间

C 语言中使用 mktime 函数和 stime 函数来处理时间。 处理之前&#xff0c;需要先获取当前的时间戳。并使用当前的时间戳生成struct tm&#xff0c;struct tm是C语言中用于表示日期和时间的结构体&#xff0c;通常用于在程序中操作和处理日期时间信息。它包含了以下成员变量&a…

DataDreamer:让创建自定义数据集轻松无比!还自带标注!

编辑&#xff1a;OAK中国 首发&#xff1a;oakchina.cn 喜欢的话&#xff0c;请多多&#x1f44d;⭐️✍ 内容可能会不定期更新&#xff0c;官网内容都是最新的&#xff0c;请查看首发地址链接。 ▌前言 Hello&#xff0c;大家好&#xff0c;这里是OAK中国&#xff0c;我是Ash…

C语言----字符数组指针

1.char arr[] {a,b,c,d,e,f}; sizeof分析类型就可以计算所占的内存空间的大小&#xff1b; &#xff08;1&#xff09;printf("%d\n", sizeof(arr)); 数组名单独放进里面&#xff0c;计算整个数组大小&#xff0c;所以是6字节&#xff1b; &#xff08;2&#xff…

Java架构师之路八、安全技术:Web安全、网络安全、系统安全、数据安全等

目录 Web安全&#xff1a; 网络安全&#xff1a; 系统安全&#xff1a; 数据安全&#xff1a; Java架构师之路七、大数据&#xff1a;Hadoop、Spark、Hive、HBase、Kafka等-CSDN博客Java架构师之路九、设计模式&#xff1a;常见的设计模式&#xff0c;如单例模式、工厂模式…

【自动化脚本】常用自动化脚本一览【持续更新】

服务器初始化用户初始化 必备软件JDK1.8mavennginxredis docker相关dokcer安装docker mysql8.0 git相关git安装git卸载 服务器 初始化 wget -O centos7-init.sh https://files.rundreams.net/sh/run-sh/init/centos7-init.sh && sh centos7-init.sh用户初始化 wget …

设置主从复制时发生报错Could not find first log file name in binary log index file‘;解决方案

如图所示&#xff0c;slave_io_runnind:no,slave_sql_running:yes 此时&#xff0c;主从配置错误&#xff0c;我们可以查看Last_IO_Error:来查看报错信息 此时&#xff0c;我们需要停止从服务器的主从服务&#xff0c; mysql> stop slave; Query OK, 0 rows affected, 1 w…

k8s-heml管理 17

Helm是Kubernetes 应用的包管理工具&#xff0c;主要用来管理 Charts&#xff0c;类似Linux系统的 yum。Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata&#xff0c;以便于应用程序的分发。 对于应用…

c语言之数组定义和初始化

数组是由类型说明符&#xff0c;数组名常量表达式组成&#xff0c;和python的序列类似。python序列是没有常量表达式 比如&#xff0c;有十个学生成绩&#xff0c;要定义数组如下 int stud[10]&#xff0c; int是类型说明符&#xff0c;stud是数组名&#xff0c;[10]表示有1…