数组与指针相关

二级指针与指针数组

#include <stdio.h>  
#include <stdlib.h>  int main() {  // 定义一个指针数组,每个元素都是一个指向int的指针  int *ptr_array[3];  // 为指针数组的每个元素分配内存  ptr_array[0] = malloc(2*sizeof(int));  ptr_array[1] = malloc(2*sizeof(int));  ptr_array[2] = malloc(2*sizeof(int));  printf("%d\n", sizeof(int));  printf("%d\n", sizeof(int*));  printf("%d\n", sizeof(ptr_array));  // 定义一个二重指针,让它指向指针数组的第一个元素  int **double_ptr = &ptr_array[0];  //赋值方式(double_ptr[0][0]) = 40; (double_ptr[1][0]) = 50; (double_ptr[2][0]) = 60; (double_ptr[0][1]) = 70; (double_ptr[1][1]) = 80; (double_ptr[2][1]) = 90; // 通过二重指针访问和打印指针数组的元素  for (int i = 0; i < 3; i++) {//指针数组中每个元素占用8字节,代表指针数组元素的地址printf("double_ptr[%d] points to a value of %d\n", i, &(double_ptr[0])+i);  printf("double_ptr[%d] points to a value of %d\n", i, (double_ptr+i));  printf("double_ptr[%d] points to a value of %d\n", i, (&double_ptr[i]));  //代表每行第2元素中的地址printf("double_ptr[%d] points to a value of %d\n", i, *(&(double_ptr[0])+i)+1);printf("double_ptr[%d] points to a value of %d\n", i, *(double_ptr+i)+1); printf("double_ptr[%d] points to a value of %d\n", i, (double_ptr[i]+1));  printf("double_ptr[%d] points to a value of %d\n", i, &(double_ptr[i][0])+1); printf("double_ptr[%d] points to a value of %d\n", i, &(double_ptr[i][1])); //代表每行第二个元素值所指空间的内容printf("double_ptr[%d] points to a value of %d\n", i, *(*(&(double_ptr[0])+i)+1));printf("double_ptr[%d] points to a value of %d\n", i, *(*(double_ptr+i)+1));printf("double_ptr[%d] points to a value of %d\n", i, *(double_ptr[i]+1));printf("double_ptr[%d] points to a value of %d\n", i, *(&(double_ptr[i][0])+1)); printf("double_ptr[%d] points to a value of %d\n", i, (double_ptr[i][1])); }  // 释放内存  for (int i = 0; i < 3; i++) {  free(ptr_array[i]);  }  return 0;  
}

二维数组、及通过二级指针访问二维数组

#include <stdio.h>  
#include <stdlib.h>  int main() {  int a[3][2] = {{1,2},{3,4},{5,6}};//&a整个数组的地址,a数组首行地址,*a数组首行第一个元素地址,**a数组第一个元素的值printf("%d,%d,%d,%d\n",&a, a,*a,**a);//解释方式与上条语句类似printf("%d,%d,%d,%d\n",&a, &a[0],&a[0][0],a[0][0]);//第一种:二维数组指针,指向整个二维数组int (*ptr)[3][2]=&a;//第二种:一维数组指针,指向二维数组第一行元素int (*ptr1)[2]=a;//or &a[0]//第三种:int *型指针,指向二维数组第一行第一列的第一个元素int *ptr2=&a[0][0];//or *a//第四种:二级指针与二维数组结合int **ptr3 = calloc(3, sizeof(int *));for (int i = 0; i < 3; ++i) {*(ptr3+i)=*(a+i);printf("%d,%d\n",*(*(ptr3+i)+0),*(*(ptr3+i)+1));}int **ptr4 = calloc(3, sizeof(int *));for (int i = 0; i < 3; ++i) {printf("%d,%d\n",a+i,*(a+i));*(ptr4+i)=(a+i);printf("%d,%d\n",*(*(ptr4+i)+0),*(*(ptr4+i)+1));}return 0;  
}

二维数组指针

#include <stdio.h>  
#include <stdlib.h>  int main(int argc, char **argv) {//二维数组指针int (*ptr)[3][3] = calloc(3 * 3, sizeof(int));//&ptr:二维数组指针的地址//ptr:二维数组的首地址,代表整个数组//*ptr:二维数组的首行首地址,代表整行//**ptr:二维数组的首个元素的地址,代表数组的第一个元素printf("%d,%d,%d,%d\n",&ptr,ptr,*ptr,**ptr);//赋值for (int i = 0; i < 3; ++i) {for (int j = 0; j < 3; ++j) {(*ptr)[i][j]=j;}}for (int i = 0; i < 3; ++i) {printf("%d,%d,%d\n",(*ptr)[i],(*ptr)+i,*((*ptr)+i));}for (int i = 0; i < 3; ++i) {printf("%d,%d\n",*((*ptr)[i]),**((*ptr)+i));}//打印for (int i = 0; i < 3; ++i) {for (int j = 0; j < 3; ++j) {printf("%d", (*ptr)[i][j]);}printf("\n");}return 0;
}

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

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

相关文章

USB Micro引脚及相应原理图绘制

前言&#xff1a;博主为实现绘制USB Micro输入口原理图&#xff0c;首先在 GD32F103XX的数据手册中找到引脚的功能描述&#xff0c;找到USBDM与USBDP功能&#xff0c;分别为引脚PA11与引脚PA12。然后进行相应的原理图绘制。 * USBDM。USBDM 引脚是与通用串行总线 (Universal Se…

20210505-20240223 CSDN 1024天 创作纪念日

作为一个小白&#xff0c;我没想到自己在不知不觉间就走过了如此长久的一段旅程。恍然间&#xff0c;三年多的时光已经过去了。 机缘 我首次写博客是为了记录日常&#xff0c;分享生活。 在这1024天里&#xff0c;我做了一些记录和分享&#xff0c;特别是遇到一些有趣的、值得…

2024 年了,如何 0 基础开始学习 Vue ?

最近 5 个月&#xff0c;我都在忙着构建我的第一开源项目 HexoPress&#xff0c;这个项目是使用 Electron Vue 3 TypeScript 等技术实现的&#xff0c;一方面&#xff0c;我真的很需要一款合自己心意的博客编辑器&#xff0c;另一方面&#xff0c;我也是真心想学习 Electron …

面试经典150题【11-20】

文章目录 面试经典150题【11-20】388.O(1) 时间插入、删除和获取随机元素238.除自身以外数组的乘积134加油站135.分发糖果42. 接雨水13.罗马数字12.整数 转 罗马数字58.最后一个单词的长度14.最长公共前缀151.反转字符串中的单词 面试经典150题【11-20】 388.O(1) 时间插入、删…

[今天跟AI聊聊职场] ~你能接受你的直接领导能力不如你,年纪还比你小很多吗?

知乎问题&#xff1a; 弟弟今年35岁&#xff0c;刚换了一份工作&#xff0c;直接领导小A比他小5岁&#xff0c;各方面经验没有他成熟。难的工作都是弟弟在做&#xff0c;功劳都被直接领导小A抢走了&#xff0c;有时候还要被直接领导小A打压。弟弟感觉升职加薪无望。现在找工作不…

Movelt使用笔记-Movelt Setup Assistant

目录 Setup Assistant配置1 Start 加载urdf模型3 Virtual joints 虚拟关节5 Robot Poses 机器人位姿7 Passive Joints 被动关节8 Controllers 控制器9 Simulation 仿真10 3D Perception 3D感知11 Author Information 作者信息12 Configuration Files 配置文件启动MoveIt!Setup…

Vulnhub-OSCP

信息收集 # nmap -sn 192.168.1.0/24 -oN live.nmap Starting Nmap 7.94 ( https://nmap.org ) at 2024-02-07 17:49 CST Nmap scan report for 192.168.1.1 Host is up (0.00052s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nmap scan report for 192.168.1.…

深度解析:Integer.parseInt() 源码解读

深度解析&#xff1a;Integer.parseInt() 源码解读 关键要点 解析字符&#xff1a;用于将字符转换为对应的数字值 Character.digit(s.charAt(i),radix) 确定limit&#xff1a;根据正负号分别设定 int limit -Integer.MAX_VALUE;【正】 limit Integer.MIN_VALUE;【负】 负数…

Java基础知识点:入门篇(一)

目录 Java起源第一个Java程序注意点 Java基本语法Java标识符命名规范&#xff08;驼峰命名法&#xff09;注意点 Java修饰符访问控制修饰符privateprotectedpublicdefault 非访问控制修饰符final修饰符abstract修饰符synchronized 修饰符transient 修饰符volatile 修饰符 Java变…

挑战!贪吃蛇小游戏的实现(2)

在贪吃蛇小游戏的实现&#xff08;1&#xff09;中&#xff0c;我们学习了win32 相关的一些知识&#xff0c;本篇文章&#xff0c;博主将带领大家从0开始实现贪吃蛇小游戏&#xff01; 贪吃蛇游戏设计与分析 本地化 <locale.h>实现本地化&#xff0c;该头文件提供的函数…

备战蓝桥杯————二叉树解题思维1

解决二叉树问题时&#xff0c;常采用两种思维模式&#xff1a; 遍历思维模式&#xff1a; 这种思维模式强调是否可以通过一次遍历二叉树来得到答案。通常使用一个遍历函数&#xff08;比如前序、中序、后序遍历&#xff09;结合外部变量来实现。这种方法适用于需要在每个节点上…

如何进行JMeter分布式压测?一个案例教你详细解读!

引言 当前快速发展的互联网应用领域&#xff0c;高效的性能测试已经成为了确保在线应用质量和用户满意度的重要手段之一。 而JMeter分布式压测则是实现这一目标的最佳选择。然而&#xff0c;很多人并不知道如何使用JMeter进行分布式压测&#xff0c;更不知道如何获取准确的测…

前端工程化面试题 | 15.精选前端工程化高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

物奇ENC算法开关接口修改方法

物奇ENC算法开关接口修改 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)&#xff1f;可加我微信hezkz17, 本群提供音频技术答疑服务&#xff0c;群赠送语音信号处理降噪算法&#xff0c;蓝牙耳机音频&#xff0c;DSP音频项目核心开发资料, 1 配置工具事件接口 2 代…

LeetCode 热题 100 | 二叉树(四)

目录 1 114. 二叉树展开为链表 2 105. 从前序与中序遍历序列构造二叉树 3 437. 路径总和 III 菜鸟做题&#xff08;即将返校版&#xff09;&#xff0c;语言是 C 1 114. 二叉树展开为链表 题眼&#xff1a;展开后的单链表应该与二叉树 先序遍历 顺序相同。 而先序遍历就…

【编译原理】用Python实现LR(0)语法分析

实验内容 对于给定的如下文法&#xff0c;编写调试一个上下文无关文法的LR(0)分析程序。 文法G’为&#xff1a; S → E S\to E S→E E → a A E\to aA E→aA E → b B E \to bB E→bB A → c A A\to cA A→cA A → d A\to d A→d B → c B B\to cB B→cB B → d B\to …

网购商城系统源码 积分兑换商城系统源码 独立后台附教程

应用介绍 本文来自&#xff1a;网购商城系统源码 积分兑换商城系统源码 独立后台附教程 - 源码1688 简介&#xff1a; 网购商城系统源码 积分兑换商城系统源码 独立后台附教程 测试环境&#xff1a;NginxPHP7.0MySQL5.6thinkphp伪静态 图片&#xff1a;

软件实际应用实例,茶楼收银软件管理系统操作流程,茶室计时计费会员管理系统软件试用版教程

软件实际应用实例&#xff0c;茶楼收银软件管理系统操作流程&#xff0c;茶室计时计费会员管理系统软件试用版教程 一、前言 以下软件以 佳易王茶社计时计费管理系统软件V17.9为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、计时计费&…

JavaWeb——007MYSQL(DQL多表设计)

# 数据库开发-MySQL 一级目录二级目录三级目录 1. 数据库操作-DQL1.1 介绍1.2 语法1.3 基本查询1.4 条件查询1.5 聚合函数1.6 分组查询1.7 排序查询1.8 分页查询1.9 案例1.9.1 案例一1.9.2 案例二 2. 多表设计2.1 一对多2.1.1 表设计2.1.2 外键约束 2.2 一对一2.3 多对多2.4 案…

遥感影像目标检测:从CNN(Faster-RCNN)到Transformer(DETR)

我国高分辨率对地观测系统重大专项已全面启动&#xff0c;高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成&#xff0c;将成为保障国家安全的基础性和战略性资源。未来10年全球每天获取的观测数据将超过10PB&#xff0c;遥感大数据时…