Linux学习-指针与数组

目录

数组和指针的关系

数组指针:

数组和指针的关系代码

指针数组

指针和二维数组的关系

数组传参 


数组和指针的关系

一维数组和指针的关系:  int a[5] = {1,43,5,3,2,};

                                        数组的数组名a是指向数组第一个元素a[0]的指针常量;

                                        a == &a[0];

                                        a的地址可以理解为int *类型: 有两种情况除外:

                                                                                             1,sizeof运算时

                                                                                               2,&运算时,是值不变类型升级为

                                                                                                     数组指针

                                                                                                      &int * == int **

                                                                                                      & int a[] == int (*a)[]

                                        对数组指针取*,值不变,类型降级成为指向数组第一个元素的指针。

                                        访问下标为n的数组元素的方式:a[n] == *(a+n) == p[n]

                                        p[n]就是p+n再取*

                                        int a[5]就是开辟20个字节连续的空间,地址是0x2000 类型就是int *

一维数组的传参:数组传参 int a[5] = {1,43,5,3,2,};

                                                int fun(int *a,int len);

字符串传参:char a[32] = {"hello world"};

                        和一维数组传参相似

数组指针:

int *a[5] = {NULL}; *和int连用,是5个元素每个元素是int *型类型。

定义一个数组,数组占四十个字节,每个元素为int *型,共五个指针。

int (*a)[5] = NULL;

定义一个指针变量,占八个字节空间,指针指向了一个int类型五个元素的数组,将来+1就会偏移20个字节

数组和指针的关系代码

“sadfghj”,一串字符串常量默认类型是char *型

用%p打印上述字符串,打印出来的是上述字符串内存的首地址

字符串常量不能改变值,要不然会崩掉

char str[10] = {"dfg"};
char *pstr = "sdf";
*str = 'S';
//是可以的,因为dfg存在str数组指针中中
*pstr = 'S';
//是不可以的的因为sdf只是将这传字符串的首地址存在pstr指针中,
*pstr不可以直接改变'sdf'常量会崩溃。

指针数组

int (*a)[];

char *a[5]

char *a[5] = {"sddsaf","sdf","ds","ad","fd"};
//相当于是定义了五个数组指针,存了这五个字符串的
首地址,这五个字符串也是常量不能更改内容。打印:
printf("%s",s[i]);

指针数组主要是用来操作字符串数组,通过将指针数组的每个元素存放字符串的首地址实现多个字符串的操作 

二维数组主要用来存放字符串数组,每行存储一个字符串,多行存储多个字符串所组成的数组。

指针和二维数组的关系

int a [2][3] = {0};int *p = NULL;
int (*q)[3] = NULL;p = &a[0][0];
p = a[0];
p = *a;q = a;//二维数组的数组名是指向第一行元素的数组指针a+1是直接加一整列的数据内存大小
//访问二维数组第m行第n列的方式a[m][n];*(a[m]+n);*(*(a+m)+n);*(p+m*N+n);*(*(a+m)+n);*(q[m]+n);q[m][n];

数组传参 

int outputarray(int (*p)[3],int len)int [2][3];outputarray(a,2);
//数组传参只需要穿数组指针类型和数组行数即可

 

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

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

相关文章

使用java构建一个哈夫曼树

使用java构建一个哈夫曼树 1. 定义节点类&#xff0c;表示哈夫曼树中的一个节点 代码&#xff1a; class Node implements Comparable<Node> {char ch; // 字符int freq; // 频率Node left, right; // 左右子节点// 节点构造函数public Node(char ch, int freq, Node …

JRebel and XRebel 插件在IDEA中的安装、激活和使用

1、JRebel安装 1、打开idea->setting->plugins->Marketplace 2、搜索插件JRebel and XRebel&#xff0c;点击安装&#xff0c;然后重启idea 如果左侧出现JRebel & XRebel代表已安装 3.离线安装JRebel 根据自己安装的idea版本进行下载电影的jrebel https://plugi…

如何检测ssh暴力破解

Shell Shell是一种用来与操作系统交互的命令行界面(CLI)。它允许用户通过输入命令来控制计算机并执行各种操作。 在Linux和Unix系统中,常用的Shell有bash、csh、ksh等。在Windows系统中,常用的Shell有cmd和PowerShell。 早期的互联网,直接通过Shell通信都是明文通信,一旦…

Flutter 设置每帧绘制结束调用的回调函数

前言 Flutter是一个开源的UI软件开发工具包&#xff0c;由Google开发&#xff0c;用于创建跨平台的移动应用程序。Flutter框架通过每帧渲染画面的方式&#xff0c;提供了流畅的用户体验和高性能的应用。在开发过程中&#xff0c;我们经常遇到需要在渲染完成一帧后执行某些特定…

1.Zookeeper理论基础

1.Zookeeper的基本概念 是一个分布式应用协调框架 &#xff0c;java编写的。客户端 /服务端 的架构模式。CP设计(一致性&#xff0c;分区容错) 它主要是用来解决分布式应用中经常遇到的一些数据管理问题&#xff0c;如&#xff1a;服务注册服务、状态同步服务、集群管理、分布…

ALV Grid 函数

ALV Grid 函数的输出有两个&#xff1a;REUSE_ALV_GRID_DISPLAY 和 REUSE_ALV_GRID_DISPLAY_LVC 两者的操作大同小异&#xff0c;只是后者能更好的和ALV容器结合使用&#xff0c;前后则不能&#xff1b;而在输入参数属性的结构上也有些差异。 本篇文章主要讲解下ALV函数中输入…

WordPress建站入门教程:忘记数据库名称、用户名和密码了怎么办?

有时候我们需要进入phpMyAdmin管理一些数据库&#xff0c;但是登录phpMyAdmin时却需要我们输入数据库的用户名和密码&#xff0c;但是我们不记得了应该怎么办呢&#xff1f; 其实&#xff0c;我们只需要进入WordPress网站根目录找到并打开wp-config.php文件&#xff0c;就可以…

vue2数据响应式原理解析

vue2与vue3区别浅析&#xff1a;vue2和vue3区别 浅析-CSDN博客 vue是mvvm框架&#xff0c;即“模型—视图—视图模型”&#xff0c;数据模式还是javascript对象&#xff0c;通过模型中应用程序数据和业务逻辑影响到视图的改变&#xff0c;视图(用户的操作)的改变会影响到底层数…

Git 进阶 高级用法,重要命令记录

本篇文章用于记录Git高级用法&#xff0c;新手可以看我的另一篇文章&#xff1a;Git基础教学。 Git git fetch 是git pull 的细分步骤&#xff0c;git pull 包含了git fetch git pull origin master 上述命令其实相当于git fetch git merge 在实际使用中&#xff0c;git fetc…

如何使用ArcGIS Pro进行坡度分析

坡度分析是地理信息系统中一种常见的空间分析方法&#xff0c;用于计算地表或地形的坡度&#xff0c;这里为大家介绍一下如何使用ArcGIS Pro进行坡度分析&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的DEM数据&#xff0c;除了DEM数据&…

uniapp报错:request:fail abort statusCode:-1 Chain validation failed

uniapp报错信息记录 场景: 半年没碰过的app&#xff0c;今个儿突然无法登录了。 打开控制台&#xff0c;报错信息如下 {msg: request:fail abort statusCode:-1 Chain validation failed}奇怪的是用 apifox 调用相关的接口&#xff0c;可以正常运行&#xff0c;app却不行。 好…

防坑指南!说说Six Sigma咨询公司排名的那些事

在企业管理领域&#xff0c;六西格玛&#xff08;Six Sigma&#xff09;已成为一种流行的质量管理方法。然而&#xff0c;面对众多的Six Sigma咨询公司&#xff0c;如何选择一家真正专业、有实力的合作伙伴&#xff0c;成为了许多企业面临的难题。本文&#xff0c;天行健咨询将…

高级语言讲义2019计专(仅高级语言部分)

1.编写函数&#xff0c;对给定的整数数组a&#xff08;数组长度和元素个数均为N&#xff09;进行判定&#xff1a;是否存在某个整数a[i]&#xff08;0<i<N&#xff09;&#xff0c;等于在其之前的所有整数的和 #include <stdio.h> #include <stdbool.h>bool…

编写 Ansible Playbooks

简介 简而言之&#xff0c;服务器配置管理&#xff08;也被广泛称为 IT 自动化&#xff09;是将基础设施管理转化为代码库的解决方案&#xff0c;描述了部署服务器所需的所有流程&#xff0c;并将其转化为一组可以进行版本控制和轻松重复使用的配置脚本。它可以极大地提高任何…

在训练过程中,如何动态调整哪些层被冻结或解冻

在训练过程中动态调整哪些层被冻结或解冻通常涉及到在训练的不同阶段改变模型参数的requires_grad属性。这可以通过编写一个自定义的训练循环或者利用深度学习框架提供的回调函数&#xff08;callbacks&#xff09;来实现。以下是一些可能的方法&#xff1a; 自定义训练循环: 在…

JVM相关知识

JVM相关知识 &#x1f333;1.JVM概述&#x1fab4;1.1 JVM作用:&#x1fab4;1.2JVM构成&#x1fab4;1.3JVM整体结构图 &#x1f333;2.类加载子系统&#x1fab4;2.1作用&#x1fab4;2.2类加载过程&#x1f331;2.2.1加载:&#x1f331;2.2.2连接&#x1f331;2.2.3初始化 &…

浅谈 Vue3 静态提升和预字符串化

前言 很多朋友在看到 Vue3静态提升 的时候很不理解&#xff0c;不明白这句话到底是什么意思&#xff0c;今天我们就通过这篇日记来搞明白。如果有什么地方描述不正确&#xff0c;请多多指正。 静态类型&#xff08;前置信息&#xff09; 判断节点是否为静态类型&#xff0c;…

【BUUCTF Misc】通关 3.0

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏 …

利用GPT开发应用001:GPT基础知识及LLM发展

文章目录 一、惊艳的GPT二、大语言模型LLMs三、自然语言处理NLP四、大语言模型LLM发展 一、惊艳的GPT 想象一下&#xff0c;您可以与计算机的交流速度与与朋友交流一样快。那会是什么样子&#xff1f;您可以创建哪些应用程序&#xff1f;这正是OpenAI正在助力构建的世界&#x…

Qt多弹窗实现包括QDialog、QWidget、QMainWindow

1.相关说明 独立Widget窗口、嵌入式Widget、嵌入式MainWindow窗口、独立MainWindow窗口等弹窗的实现 相关界面包含关系 2.相关界面 3.相关代码 mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" #include "tformdoc.h" #incl…