2-17,18,19 -- 关于指针

指针(pointer

声明指针

int *p;

定义指针

int a = 4;
int *p = &a; //指针p是指向变量a的地址的指针

指针数组

int *arr[5];

数组指针

int (*arr)[5];

函数指针

int (*fun)(int,int) // 声明一个指向函数的指针,这个函数的返回值是int,有两个int的参数

指针的指针

int **p;

const指针

const int *p;//声明一个指向const int的指针p,p所指向的值不会改变

指针到 const:

int *const p = &a;//const p表示指针p所指向的地址无法改变,但可以改变它所指向的值

const 指针到 const:

const int *const p = &a;//p 是一个指向 const int 的指针,且 p 的地址不能改变

*和[]

例子1:

18.1.c

#include<stdio.h>
int main(){int arr[6] = {0};arr[3] = 4;printf("%d\n",arr[3]);*(arr + 3) = 6;printf("%d\n",*(arr + 3));	return 0;
}

在这里插入图片描述
经过上面的例子,可以看到*和[]都可以获取数组的数值

例子2:

将*(arr + 3) = 6;赋值操作删除,看看能不能用arr[3],*(arr + 3)两种方式取得同一个数值

#include<stdio.h>
int main(){int arr[6] = {0};arr[3] = 4;printf("%d\n",arr[3]);printf("%d\n",*(arr + 3));	return 0;
}

在这里插入图片描述
例子2告诉我们arr[3],和*(arr + 3)在获取数值是等价的。

指针的值

int a = 4;
int *p = &4;
int b = 5;
p = &b;

指针也是一个变量,有自己的值,而这个值存储的是其它变量或函数的地址
在这里插入图片描述

而p所在的内存地址是我们无法修改的,正如我们无法修改a的内存地址,事实上任何变量或函数的内存地址我们都无法直接修改,那也不是我们应该干的。

数组参数的类型 – 指针

#include <stdio.h>void fun() {printf("sizeof(a): %zu\n", sizeof(a));// %zu是
}int main(void) {int array[10];printf("sizeof(array): %zu\n", sizeof(array));fun(array);return 0;
}

问1:上述代码的输出结果是多少呢?

答1:

40
8

sizeof(array)判断的是数组的长度,int型数组有十个元素,自然是40B
在x86-64的操作系统上
对于int a[]参数,sizeof(a)输出8,是因为一个指针占8B

二维数组的内存分配

int (*arr)[2][5];

假设arr[0][0]在内存中的地址是X
arr[1][3]在内存中的地址是X+45+34,(X+32)
arr[i][j]在内存中的地址是X+4arr[0].size()i+4j,(X+4arr[0].size()i+4j)

指针的指针与二位数组

看一下这两者有何区别

char **argv;
char* argv[];

在c中,main函数可以这样写

int main(int grac,int **argv)

也可以这样写

int main(int grac,int *argv[])

在函数参数中,两者是等价的

注:诸位站友如有所收获不如点个免费的赞,如有错误之处或有其它补充的点,请在评论区发表你的观点,看到必回。

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

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

相关文章

jmeter分布式(四)

一、gui jmeter的gui主要用来调试脚本 1、先gui创建脚本 先做一个脚本 演示&#xff1a;如何做混合场景的脚本&#xff1f; 用211的业务比例 ①启动数据库服务 数据库服务&#xff1a;包括mysql、redis mysql端口默认3306 netstat -lntp | grep 3306处于监听状态&#xf…

数据库第6次作业

内容 1、创建视图v_emp_dept_id_1&#xff0c;查询销售部门的员工姓名和家庭住址 2、创建视图v_emp_dept&#xff0c;查询销售部门员工姓名和家庭住址及部门名称。 3、创建视图v_dept_emp_count(dept_name,emp_count,avg_salay)&#xff0c;统计每个部门人数并计算平均工资。 …

解读网传《深圳IT圈⭕新解读八小时工作制》

网传深圳IT圈的新解读八小时工作制 工作时间安排&#xff1a; 10:00-12:0014:00-18:0019:00-21:00 初看&#xff1a;有惊喜 上午开始时间晚&#xff1a;相对于传统的9点开始&#xff0c;这种安排允许员工有更多的早晨时间&#xff0c;可以用来休息或处理个人事务。下午和晚上分…

typescript新规范及vue3常用的属性解析【2024】

文章目录 如在vue中 使用tyescript来规范定义类型解释一下 < >的意思 定义 了 personList &#xff1a;是个数组 Array 且要告诉里面每一项 结构长什么样 Array<PersonInter>definepropsvue3中的hooks组件父子组件 方法、数据、相互调用 如在vue中 使用tyescript来…

【LSTM和GRU极简,和最新的TT也就是状态】机器学习模型来学习状态

LSTM&#xff08;长短期记忆网络&#xff09;中的关键参数包括输入门、遗忘门、输出门、细胞状态和隐藏状态。以下是如何进行推理计算的示例&#xff1a; LSTM参数和公式 输入门&#xff08;i_t&#xff09;&#xff1a;决定输入的信息量。 遗忘门&#xff08;f_t&#xff0…

【React Native】做了一个简约的雷达图组件

本文目录 【React Native】做了一个简约的雷达图组件获取组件实现思路用法示例简易用法自定义美化 结语 【React Native】做了一个简约的雷达图组件 最近在使用 react-native 中需要绘制雷达图&#xff0c;没有找到合适的小组件&#xff08;大的图表库未直接提供&#xff0c;需…

pico+unity3d运行测试方法

一. 发布并运行程序 这个就很简单&#xff0c;电脑和pico数据库连接、pico打开开发者模式、运行的时候选择设备pico 二. pico串流助手 1.需要先下载pico的软件 PICO Developer Center、并安装串流助手、这种方式的话&#xff0c;安装了向日葵的小伙伴可能有冲突、百度一下解…

c#中的特性

在C#中&#xff0c;特性&#xff08;Attributes&#xff09;是一种向程序元素&#xff08;如类、方法、属性等&#xff09;添加元数据的方式。特性可以用来提供关于程序元素的附加信息&#xff0c;这些信息可以在编译时和运行时被访问。 特性主要有以下几个用途&#xff1a; 提…

手机数据恢复篇:如何从 Android 设备内恢复数据

如何从 Android 内部存储恢复数据&#xff1f; 要从 Android 内部存储恢复已删除的文件&#xff0c;您需要一个 Android 内部存储恢复应用或程序。请继续阅读以获取可靠的 Android 数据恢复软件&#xff0c;并让它帮助您从 Android 手机的内部存储恢复数据。 是否有可能恢复 An…

4-2 权重衰减

前一节我们描述了过拟合的问题&#xff0c;本节我们将介绍一些正则化模型的技术。 我们总是可以通过去收集更多的训练数据来缓解过拟合。 但这可能成本很高&#xff0c;耗时颇多&#xff0c;或者完全超出我们的控制&#xff0c;因而在短期内不可能做到。 假设我们已经拥有尽可能…

图片转文字的软件,分享3种不同的类型的软件!

在信息爆炸的时代&#xff0c;图片作为一种直观、生动的信息载体&#xff0c;已经成为我们日常生活中不可或缺的一部分。然而&#xff0c;有时候我们可能需要将图片中的文字提取出来&#xff0c;以便于编辑、整理或进一步使用。那么&#xff0c;有哪些实用的图片转文字软件可以…

一个引发openssl崩溃问题案例

1 背景 最近用libevent写了一个https代理功能&#xff0c;在调研的时候&#xff0c;遇到了一个项目用到了本地多个openssl库引发的ssl握手崩溃问题。 2 开发环境 项目库版本号依赖项libeventlibevent-2.1.8-stableopenssl 1.1openssl1.0u / 1.1.1w / 3.3.1...... 3 问题现象…

Python酷库之旅-第三方库Pandas(024)

目录 一、用法精讲 61、pandas.to_numeric函数 61-1、语法 61-2、参数 61-3、功能 61-4、返回值 61-5、说明 61-6、用法 61-6-1、数据准备 61-6-2、代码示例 61-6-3、结果输出 62、pandas.to_datetime函数 62-1、语法 62-2、参数 62-3、功能 62-4、返回值 62-…

关于SQLException: Illegal mix of collations (`utf8mb4_general_ci,IMPLICIT`)...错误

希望文章能给到你启发和灵感&#xff5e; 如果觉得文章对你有帮助的话&#xff0c;点赞 关注 收藏 支持一下博主吧&#xff5e; 阅读指南 开篇说明一、基础环境说明1.1 硬件环境1.2 软件环境 二、报错信息三、最后 开篇说明 记录一个查询错误 场景&#xff1a;数据库之间某表复…

旷野之间 16 – AI 代理、AI 代理基础设施、平台和比较

在本文中&#xff0c;我们将研究 AI 代理、AI 代理基础设施、市场上最流行的 AI 代理平台、它们的比较以及 AI 代理的未来 我们将按以下顺序讨论这些主题 1. 关于人工智能代理 2. 人工智能代理在行业中的应用 3. AI代理基础设施 4. 最受欢迎的 AI 代理平台及比较 5.您将如…

【笔记】nginx命令

查看 启动 通过./nginx启动nginx之后 可以在虚拟机中进入/usr/local/nginx/html 去查看cat index.html 也就是此页面的源代码 进入vim /etc/profile 配置完之后保存退出 source /etc/profile 手动重载资源 随后就可以在任意位置重载资源了 nginx -s reload 部署静态资源就把静…

两项国际设计奖,支持双设备—悠律Ringbuds pro开放式蓝牙耳机体验

在音频设备领域&#xff0c;开放式耳机对比入耳式耳机的优势就是既能听到耳机内的声音又能感知环境音&#xff0c;很适合在户外以及办公时使用&#xff0c;今天分享一款新品牌悠律UMELODY——悠律凝声环Ringbuds pro&#xff0c;它采用气传导耳挂式设计&#xff0c;佩戴舒适、安…

【人工智能】 知识表示与推理(八数码 + 传教士与野人渡河)

目录 一、八数码难题 1. 需求分析 2. 数据结构、功能模块设计与说明 2.1 算法思路 2.2 数据结构 3. 核心代码与测试结果说明 3.1 核心代码 3.2 测试结果说明 4. 存在的问题与体会 4.1 存在的问题 4.2 体会 二、传教士与野人渡河 1. 需求分析 2. 数据结构、功能模…

基于EMQX+Flask+InfluxDB+Grafana打造多协议物联网云平台:MQTT/HTTP设备接入与数据可视化流程(附代码示例)

摘要: 本文深入浅出地介绍了物联网、云平台、MQTT、HTTP、数据可视化等核心概念&#xff0c;并结合 EMQX、Flask、InfluxDB、Grafana 等主流工具&#xff0c;手把手教你搭建一个支持多协议的物联网云平台。文章结构清晰&#xff0c;图文并茂&#xff0c;代码翔实易懂&#xff0…

2024-07-14 Unity插件 Odin Inspector1 —— 插件介绍

文章目录 1 介绍2 模块3 学习目的 1 介绍 ​ Odin Inspector 是 Unity 的一个插件&#xff0c;拥有强大、自定义和用户友好的编辑器&#xff0c;而无需编写任何自定义编辑器代码&#xff0c;使得编程过程中的数据可视化更容易实现。 ​ 具体功能包括&#xff1a; 更舒适美观…