指针与数组存储分析

C语言中的指针与数组:概念、关系与应用 指针和数组是C语言中最基本的概念之一,它们相互关联且具有强大的功能。通过指针,可以实现动态内存管理、操作数组、处理字符串等复杂任务。数组的名字本质上是一个指针,因此,指针和数组之间有很多巧妙的用法和相互转换。要深入掌握C语言,理解指针和数组的关系是非常重要的。指针使得C语言能够直接操作内存,而数组则提供了一种方便的方式来存储和操作多个数据元素。 阅读详情
char *a = "hello world";
char b[] = "hello world";
*a = 'c';
b[0] = 'c';
编译一下,编译通过,运行一下,崩溃了,这是为什么呢?
下面我们就来详细的分析一下:
从逻辑上,操作系统是这样子做的,
char *a = "hello world";首先,操作系统在编译器规划内存方案中的的文字常量区分配一段内存(是连续的吗?),存储"hello world"字符串(以二进制的形式),然后在栈区分配一个内存,存储"hello world"字符串所在内存的首地址。
char b[] = "hello world";操作系统在编译器规划的内存方案中的栈区分配一段连续内存空间(12个字节),存储"hello world"字符串(以二进制的形式)。
那么当我们*a = 'c';的时候,就是试图修改文字常量区的内容,但是文字常量区存储的可都是常量,常量一经初始化,就不允许被修改,所以产生错误,于是杯具就发生了……
而b[0] = 'c';是修改的栈区数组的内容,当然是合法的啦。

怎么让编译器帮我们检查出错误呢?这就需要我们巧妙的使用const来显示的告诉编译器,哥定义的内容是不允许被修改的!
const char *a = "hello world";或者
char const *a = "hello world";
这样a就变成了一个常量指针,意思是说a是一个“指向常量的指针”,那么a所指向的内存区域的内容是不允许被修改的。
泰山派RK3576开发板部署Qwen3-VL-4B多模态模型实战指南:从模型转换到板端推理全流程 本文提供了在泰山派RK3576开发板上部署阿里Qwen3-VL-4B多模态模型的完整实战指南。详细介绍了从环境准备、模型转换(包括视觉模型转换为.rknn格式和语言模型转换为.rkllm格式)、交叉编译到板端推理的全流程,重点讲解了如何利用RK3576的NPU进行硬件加速,实现高效的边缘AI应用。 阅读详情

相关推荐

LLCE、PFE模块,二层交换/桥接的通用学习转发机制

NXP 文档里给出的正式全称如下:面向 CAN/CAN-FD、LIN、FlexRay 的“低延迟通信引擎”,用多核 M0 固件做报文收发、过滤、路由,把主 CPU 中断负荷降到几乎 0。“数据包转发引擎”,负责以太网帧的分类、修改、转发、VLAN/NAT/IPsec 等 offload,支持 2 Gbit/s 线速且主机负载 ≈0。两者都跑各自固件,通过内部 AXI 桥可互连,实现“CAN→ETH”零主核参与的硬件级网关功能。是它们都集成在。

qq_25461777的博客 1303

存储指针的数组

#include <stdio.h> #include <stdlib.h> int main(void){ int age[3][4] = { {19, 2, 3, 4,}, {5, 6, 7, 8,}, {9, 10, 11, 112} }; //定义一个有两个元素的指针数组,每个元素都是一个指针变量 int *neme[2]; //设置一个数组指针 存储最大的两个值 if(age[0][0] >= age[0][1]){ .

零界 3096

R语言孟德尔随机化环境搭建:手把手教你搞定gwasvcf、gwasglue等包的安装报错(附本地安装包)

本文详细介绍了R语言中孟德尔随机化环境搭建的全流程,重点解决gwasvcf、gwasglue等包的安装报错问题。从依赖关系解析到GitHub访问配置,再到离线安装方案,手把手教你搭建完整的分析环境,特别适合生物信息学新手快速上手。

weixin_29093017的博客 215

C语言如何指针数组储存字符串,周立功教你学C语言编程:教你数组是如何保存指针的...

>>>>1.字符串与指针数组如果有以下定义:int data0 = 1, data1 = 2, data2 = 3;int *ptr0 = &data0, *ptr1 = &data1, *ptr2 = &data2;实际上地址也是数据,那么数组也可以保存指针,因此可以在基本数据类型的基础上派生一个构造类型,即将相同类型的指针变量集合在一起有序地排列...

weixin_29022115的博客 3554

Ferry工单平台部署

ferry工单平台部署

运维求生之路 1897

Cesium实战:5分钟搞定离线地图与地形加载(附避坑指南)

本文详细介绍了Cesium在内网环境下的离线部署实战方案,重点解决了影像与地形数据的本地加载问题。通过逐步指导项目配置、本地瓦片与自定义地形数据的处理,并优化相机控制体验,帮助开发者快速构建安全、高效的三维地球应用,避免常见的401错误与加载失败陷阱。

weixin_30632089的博客 281

深度理解数组在内存中的存储以及指针数组和数组指针的概念

指针和数组我们之前也谈到了,我们说指针就是地址,对指针解引用就是找到这个地址所指向空间存储的数据。数组就是将相同数据类型的数据存储在一块连续的内存空间中的数据类型,指针和数组都是自定义数据类型。但这只是最基本的定义,如果想要理解的更深刻,我们必须深挖其中的底层原理。所以今天我们就来深挖一下,他们之间的区别和联系。 数组在内存中的存储方式是从低地址往高地址使用,定义一个数组会一次开辟一大块空间,然...

zym1348010959的博客 6474

STM32定时器ARR寄存器详解:从‘水桶接水’到精准测速,你的PWM和编码器都靠它

本文深入解析STM32定时器ARR寄存器的核心原理与应用技巧,从PWM波形生成到编码器测速实战。通过水桶模型和硬件本质的比喻,揭示ARR如何作为定时器的'心跳节拍器',并详细探讨其在动态调频、死区时间配置和高精度PWM中的关键作用。特别针对编码器模式下的ARR配置和溢出补偿算法进行优化建议,帮助工程师提升系统性能和实时性。

weixin_33734785的博客 379

指针存储数组 C

指针运用不熟练,还在滥用指针来表示数组函数吗,严格规范指针的书写从现在就要开始啦

keep_contact的博客 1040

两点调制原理以及RF DAC和PLL SDM两条输入路径理解

特性数据本质原始数字比特流 (0/1)平滑后的预失真波形数据连接对象Σ-Δ调制器 (SDM)的小数输入RF DAC在系统中的角色主调制路径:通过改变PLL分频比产生频率偏移辅助补偿路径:通过RF DAC产生补偿电压,校正PLL失真可否加入延时可以且必须。用于数字时序对齐,对性能无影响。绝对不可以。会导致补偿失配,严重破坏信号频谱。功能目标实现数字域的频率调制确保模拟域的波形和频谱完美因此,在您所描述的这种先进发射机架构中,2-point数据是数字指令,送给SDM;

m0_49540263的博客 604

大语言模型应用指南:幻觉和偏见问题

大语言模型应用指南:幻觉和偏见问题 1. 背景介绍 1.1 大语言模型的发展历程 1.1.1 早期的语言模型 1.1.2 Tr

AI天才研究院 958

C语言使用指针数组存取数组(指针数组与数组)

一、定义字符数组和字符指针数组 二、打印指针数据的基地址和指针的指向 三、指针数组的下标指向字符数组,并格式化字符数组的内容 四、打印字符数组的基地址和指针数组的指针指向 五、完整测试代码和效果显示

a6662580的博客 5911

【Camera2教程一】Camera2的框架Pipeline和framework中核心类和接口的详细介绍

Camera2 的 API 模型被设计成一个 Pipeline(管道),它按顺序处理每一帧的请求并返回请求结果给客户端。

jiangchaobing_2017的博客 790

指针进阶之数组指针和指针数组

指针进阶之数组指针和指针数组,超详细,不会来看

人生得意须尽欢 7948

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

蓝桥杯:人物相关性分析(双指针+双数组存储)

蓝桥杯:人物相关性分析 题解: 最容易想到的便是枚举遍历,但由于数量巨大必定会超时。 因此我们可考虑使用双指针来模拟滑动窗口解决该题。 首先我们创建两个数组用双指针查找分别存储出现的Alice和Bob的头部下标,接着我们再遍历两个数组,任选出现的Alice和Bob的下标进行逻辑上的比较,符合题目范围则sum加一,否则不加即可。 代码: #include <bits/stdc++.h> using namespace std; char str[1000001]; int a1[1000000

xiangguang_fight的博客 499

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C语言——数组,指针,指针数组,数组指针

计算机在保存数据时,把数据放在一个个存储单元中,存储单元可以理解为一个个小房间。地址就是存储单元(小房间)的房间号,且这个房间号是唯一的。详细请学习计算机组成原理3.1。

2301_80339607的博客 978

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【C语言】指针数组和二级指针

文章目录 一、指针数组 1.定义 2.案例分析 二、二级指针 (1)指向指针变量的指针 (2)指向指针数组的指针 一、指针数组 1.定义 指针变量也是C语言中的一种变量,因此指针变量也可以构成数组。若一个数组中所有元素都是指针类型,那么这个数组就是指针数组。给数组中每个元素都存放一个地址。 定义一维指针数组语法格式如下: 类型名* 数组名[数组长度]; 例如:int* p[5];//定义了一个包含5个整型指针的指针数组 指针数组是一个数组,那么指针数组的数组名是一个地址,它指.

Jacky_Feng的博客 4004

编程语言|C语言——数组与指针

同一类型的变量——元素(element)集中在一起,在内存上排列成一条直线,这就是数组(array)。

也许有一天我们再相逢 睁开眼睛看清楚 我才是英雄! 1293

关于数组指针和指针数组

在C/C++的编程中,对指针的使用和了解,再熟悉都不为过。 C/C++毫无疑问的十分强大,但离开了指针和数组,它们就什么都干不了了,可见其重要。   使用数组和指针来描述数据,是C/C++编程中最常见的工作。 本文通过一个描述二维数据的问题,来回顾下数组和指针的使用。   假设我们要表示的是一个5行3列的数据,则共有如下五种常用方式。 每种方式

828

C++二维数组的建立方法和指针数组/数组指针的理解

https://blog.youkuaiyun.com/qq_26822029/article/details/85037209 上面这篇说得更详细。 1. A (*ga)[n] = new A[m][n]; ... delete []ga; 缺点:n必须是已知 优点:调用直观,连续储存,程序简洁(经过测试,析构函数能正确调用) A** ga = new A*[m]; for(int i = 0; i < m; i++) ga[i] = new A[n]; ... for(int i = 0; i &l

不算太晚 523

学习笔记2:指针经典代码阅读练习

指针经典代码阅读题

小青菜的博客 425

C语言指针数组和数组指针

本文解析了C语言中指针数组和数组指针的区别。指针数组int* p[3]是以数组为主体,存储3个int*类型元素;数组指针int (*p)[3]是以指针为主体,指向包含3个int元素的数组。文章特别强调了数组指针的类型概念,并通过二维数组与数组指针的等价性进行说明。最后通过选择题形式,测试读者对指针类型匹配的理解,指出char s[3][10]、(*k)[3]和*p之间类型不匹配的常见错误。

嵌入式开发工程师 415

C语言-指针[字符数组与字符指针]

本文介绍了C语言中字符串的两种实现方式:字符数组和字符指针。字符数组通过元素存储字符,数组名为常量不可修改;字符指针存储字符串地址,可改变指向。文章比较了两者的区别与联系,指出字符数组元素可赋值但整体不可,字符指针可改变指向。同时讲解了字符串作为函数参数的四种情况,并通过两个案例演示了字符指针在字符串拷贝和截取函数中的应用,强调对常量字符串不可修改的特性。最后给出具体代码实现字符串操作函数。

m0_73615745的博客 370

C语言——字符串指针变量与字符数组(易错分析)

C语言——字符串指针变量与字符数组(易错分析)

hjx1235的博客 2831

两指针相减怎么求?

而&p[4][2]=*(p+4)+2,由上图可知&p[4][2]=&arr[3][3],结果如下图,这时我们可以看到,arr[3][3]与arr[4][2]之间正好是4个元素。我们创建了一个二维数组以及一个数组指针,将二维数组的数组名(也就是第一行元素地址赋给p),求出&p[4][2]-&arr[4][2]之间的​​​​元素个数。再来看下面这一张图,我们知道,数组元素的存储是连续的,数组元素类型为int型,而指针p指向的数组元素也是int型,其所指向的数组包含4个整型元素。

m0_74944563的博客 255

指针与一维数组--(通过指针如何访问一维数组)

详解通过指针如何访问数组中的元素,数组与指针之间的关系

小小黑码王子的博客 2312
上一篇: c++类中的static
下一篇: const疑惑
speedge
博客等级 码龄19年 8粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值