《重生到现代之从零开始的C语言生活》—— 指针4

news2024/9/23 13:26:49

字符指针变量

在指针类型中我们知道有一种指针类型为字符指针char*
如果我们想用他

int main()
{
   char p  = 'w';
   char *d = &p;
   
   return 0;
}

他可以存放字符变量的地址

也可以这么使用

int main()
{
   
    char *d = "hello"
    
    return 0 ;
}

其本质是把字符串"hello"的首字符的地址储存到字符指针中,不是将整个字符串储存
就相当于将’h’的地址储存到字符 指针变量中

数组指针变量

之前我们学习了指针数组,就是指针作为元素储存在数组中

而现在的数组指针是一种指针变量
我们知道了整数指针变量int *,浮点型指针变量float *
数组指针变量就是:存放数组的地址,能够指向数组的指针变量

数组指针变量长int (*p)[i]这样
p先于*结合,说明p是一个指针变量,然后指针变量指向的是一个大小为i个整型的数组
([ ]的优先级要高于*号的,所以必须加上( )来保证p和*结合)

那么数组指针变量是怎么初始化的呢?

数组指针变量用来存放数组地址,那么怎么获得数组呢?

我们之前有讲过,&数组名就是数组地址,如果要存放数组地址就要存放到指针变量

int (*p) [8]= &arr

解析如下:
在这里插入图片描述

二维数组传参的本质

当二维数组语言传参给一个函数的时候,我们这样写

# include <stdio.h>

void test(int parr [3][5])
{
    ....
}
int main ()
{
   int arr[3][5]={{1}{2}{3}};
   test(arr)
    ...
   return 0;
}

这里的实参也是二维数组,形参也是二维数组的形式

我们之前讲解过,二维数组的数组名表示的是第一行的地址,是一维数组的地址,第一行的一维数组的类型就是int [5],所以第一行的指针类型就是int * [5],就意味着二维数组传参的本质上也是传递了地址,传递的地址就是第一行这个一维数组的地址

那么我们也能把形参改写成指针形式

# include <stdio.h>

void test(int (*p) [5])
{
    ....
}
int main ()
{
   int arr[3][5]={{1}{2}{3}};
   test(arr)
    ...
   return 0;
}

今天的知识密度很大,希望大家认真理解

今天的知识讲解完啦,如果觉得有用可以点一下赞和关注,也可以先收藏以防需要时找不到哦,当然如果作者写的哪里有问题欢迎指出,我们一起进步!!!

祝看到这里的人天天开心哦(笔芯)

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

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

相关文章

动态链接库——深入探讨C++程序中.so技术细节和实现方式及C程序中动静态库的区别(+工程分步骤编译库)

在开发中&#xff0c;动态链接库&#xff08;DLL&#xff09;和共享对象&#xff08;Shared Object&#xff09;.so文件的使用成为提升程序灵活性和重用性的关键手段。如下相关工具&#xff0c;GNU Libtool: 一种用于创建可移植共享库的工具。Dynamic Linker: 关于动态链接器的…

VSCode - 终端使用 code 命令

1、Command Shift P 调出 输入 shell 选择 安装命令 2、授权 3、使用 % code --version 1.92.1 eaa41d57266683296de7d214f574d0c2652e1fc4 arm64% code ~/.zshrc 伊织 2024-08-21&#xff08;三&#xff09;

6.InnoDB引擎

InnoDB引擎 1.逻辑存储结构2.架构2.1内存架构2.2 磁盘结构 3.事务原理3.1 事务3.2 redo log3.3undo log 4.MVCC4.1MVCC 基本概率14.2 实现原理 1.逻辑存储结构 2.架构 2.1内存架构 2.2 磁盘结构 create tablespace mytest add datafile mytest.idb engineinnodb;后台线程 mys…

Ubuntu 24.04 上安装和配置 Zabbix Agent

Zabbix 是一个强大的开源监控工具&#xff0c;可以帮助您跟踪服务器&#xff0c;网络和应用程序。在主机环境中配置了 Zabbix Server 之后&#xff0c;下一步是添加用于监视的远程主机。Zabbix Agent 从您的服务器收集数据并将其发送到 Zabbix 服务器进行监控。 本指南将向您展…

CUDA-BEVFusion(1): 环境安装

文章目录 1. 查看ubantu配置2. 环境安装2.1 安装包下载2.1.1 tensorRT 下载2.1.2 CUDA 下载2.1.3 cuDNN 下载2.2 安装2.2.1 cuda 安装2.2.2 cuDNN 安装2.2.3 tensorRT安装3. 安装包下载1. 查看ubantu配置 查看GPU的版本sudo apt-get install pciutilslspci | grep VGA查看linux…

Tabby 终端工具推荐

前言:Tabby 是一个现代化的、跨平台的终端模拟器&#xff0c;旨在提供增强的用户体验和定制功能。Tabby&#xff08;以前称为 Terminus&#xff09;被设计为比传统终端更加灵活和美观 Eugeny/tabby: A terminal for a more modern age (github.com)https://github.com/Eugeny/…

网络安全售前入门02——产品了解

目录 1.前言 2.WEB应用防火墙介绍 2.1产品架构功能 2.2应用场景 2.3部署形式 2.4产品价值 2.5选型依据 3.上网行为审计 3.1产品架构功能 3.2应用场景 3.3部署形式 3.4产品价值 3.5选型依据 后续 1.前言 为方便初接触网络安全售前工作的小伙伴了解网安行业情况,我…

BUUCTF PWN wp--ciscn_2019_n_1

第一步 checksec&#xff0c;并检查该题的保护机制 该题的保护机制如下&#xff1a; Arch (架构): amd64-64-little 这意味着这个二进制文件是为64位AMD64架构编译的&#xff0c;使用小端序&#xff08;little-endian&#xff09;。RELRO (重定位-read-only): Partial RELRO P…

工具技巧:如何使用AutoDL算力云

AutoDL算力云可以快速构建编程环境&#xff0c;价格也很实惠 模型运行已知需要显存少&#xff0c;可以考虑选择4090&#xff0c;有24G&#xff0c;具体选择哪种类型&#xff0c;可以看看重点看看这两方面**&#xff1a;数据盘能否扩容&#xff0c;CUDA版本是否够高** 根据自身…

虚拟化技术VirtualBox

虚拟化技术是当今云计算领域中的重要技术之一&#xff0c;而VirtualBox作为一款开源的虚拟化软件&#xff0c;在Linux系统中发挥着重要作用。本文将从VirtualBox的基本概念入手&#xff0c;介绍其在Linux系统中的应用和高级云计算技术&#xff0c;包括其原理、特点、优势、使用…

http基础原理及应用

三次握手 第一次 发送SYN报文 &#xff0c;传达信息&#xff0c;我想建立连接 第二次 回传SYNACK报文&#xff0c;传达信息 &#xff1a;好的可以建立链接 第三次 回传ACK报文 传到信息&#xff1a;好的&#xff0c;我知道了&#xff0c;哪我能连接&#xff0c;然后就建立连…

深入探讨Linux中的EncFS:安全、灵活的加密文件系统

在当今数字化时代&#xff0c;数据安全是任何组织和个人都不容忽视的重要问题。随着信息技术的发展&#xff0c;对数据的保护要求也日益提高。Linux操作系统作为开源社区的杰出产物&#xff0c;在提供各种安全工具和解决方案方面也颇具优势。其中&#xff0c;EncFS&#xff08;…

[指南]微软发布Windows-Linux双系统无法启动的完整修复方案

早前微软发布的 2024-08 例行安全更新导致 Windows-Linux 双系统无法启动引起关注&#xff0c;该问题实际上在 7 月份微软已经发现并且添加到已知问题列表中&#xff0c;但可能很多用户没注意结果安装更新后 Linux 系统无法正常启动。 问题根源在原本微软发布的补丁不应该针对…

使用vagrant、virtualbox、快速创建kali linux

使用vagrant、virtualbox、快速创建kali linux 初始化kali下载vagrant相应镜像vagrant添加相应镜像创建vagrantfile在vagrantfile根目录执行cmd虚拟机登录密码修改sshd配置 用shell远程链接(可选)可视化界面设置成中文创建成功展示图 添加实体网卡使用kali 破解WiFi密码解决 on…

网络安全教程初级指南

网络安全是当今最抢手的技能之一。如今&#xff0c;信息库如此庞大&#xff0c;节点网络也越来越庞大&#xff0c;网络安全的重要性也越来越高。 本网络安全教程适合初学者和专业人士。 在本教程中&#xff0c;您将学习有关网络安全的所有基本技能、工具和策略。 本网络安全…

【初阶数据结构】顺序表和链表算法题(上)

顺序表和链表算法题 1.顺序表1.1移除元素1.2删除有序数组中的重复项1.3合并两个有序数组 2.链表2.1移除链表元素2.2反转链表2.3链表的中间结点 1.顺序表 1.1移除元素 注意&#xff1a;返回的是元素个数&#xff0c;while循环不要少了等号 //https://leetcode.cn/problems/rem…

如何快速轻松地从 iPhone 恢复已删除的照片

回忆和照片很珍贵&#xff0c;我们不能丢失它们&#xff0c;尤其是误丢它们。我们都可能不小心删除了智能手机上的图像。您是否也碰巧误删除了 iPhone 上的图像&#xff1f;或者也许是出于愤怒&#xff0c;后来才后悔&#xff1f; 不用担心&#xff0c;因为您可以快速轻松地恢…

iOS RunLoop

一:什么是Runloop Runloop&#xff0c;正如其名&#xff0c;loop表示某种循环&#xff0c;和run放在一起就表示一直在运行着的循环 二:Runloop的创建? iOS并没有提供Runloop的创建方法,因为创建了现场自然会有一个Runloop. 所以只有获取Runloop的方法: NSRunLoop * runloo…

【能量项链】

题目 错误代码&#xff08;10过7&#xff09; #include <bits/stdc.h> using namespace std; const int N 110; int a[N]; int n; int f[N][N]; int cal(int i, int k, int j) {if(i < k && k < j){return a[i] * a[(k1)%n] * a[(j1)%n];}else if(k <…

显示“ ‘cmd‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。”的解决方法

问题呈现 当我们在执行cmd命令时&#xff0c;若出现不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件的提示。 解决方法 在导航搜索框输入编辑系统环境变量&#xff08;或者右键此电脑&#xff0c;左键属性&#xff0c;左键高级系统设置&#xff0c;左键环境…