数组指针 指针数组 指向数组 的区别

Tesla v100 4张显卡组装机安装vllm和ollama在Ubuntu系统上的安装---AI大模型系统从零开始0032 本文提供Ubuntu22.04系统下vLLM的完整安装指南,适配4×32G Tesla显卡的单机4卡张量并行部署。教程包含:1)硬件要求(Ubuntu22.04、NVIDIA驱动≥535、CUDA12.1+);2)NVIDIA驱动自动安装方法;3)Python3.10虚拟环境配置;4)vLLM官方预编译包一键安装;5)单机4卡启动Qwen3.6-27B模型的完整参数说明(含FP8量化、多进程并行等关键配置)。文末附分布式部署的Ray集群方案参考链接,适用于多机8卡场景。 阅读详情

指针: 一个变量在内存中的所占存储单元的地址号就是该变量的指针。

一、数组指针与指针数组

数组指针是指向这个数组首地址的指针,指向对象是这个数组; 

指针数组是存放一类指针的数组,这个数组的每个元素都是一个指针; 
例子: 
int a[10]; 
int* s; 
s = a;//这里s就是一个数组指针,它的值就是数组a 的首地址;当然,如果a是一个整数,那s就是一个指向整型的指针; 

int a; 
int* s[5]; 

for(int i=0;i<5;i++)s[i]=a;//这里s就是一个指针数组,它的每个元素都是整型变量a的地址 

容易弄错的地方:

1.数组指针既整个数组的在内存中的起始地址; int (*p)[];
2.指针数组:如果一个数组中的元素均为指针类型的数据,则称这个数组为指针数组。如 int *p[];这种指针数组比较适合处理字符串。

例如:

typedef int type;
type *p[3]; //指针数组,存放三个type类型的指针:三个type*
type(*p)[3]; // 一个指向 有三个type数据数组的指针, 一个指针。
对应的引用有:
type & vRef[3]; // 引用数组,数组中有三个type& 类型。
type (&vRef)[3]; //数组的引用,数组有三个type数据 
其他例子:
int a[3][4]是一个二维数组。
int (*p)[4]就相当于int p[][4],它就是一个二维数组的指针,可以指向一个第二维度为4的二维数组。而a就是这样的数组,因而下面是合法的。
p=a;
int *p[3]是指针数组。说白了,就是定义了三个指针,分别为p[0],p[1],p[2]。可以将他们单独拿来使用。
int a1,a2,a3;
p[0]=&a1;
p[1]=&a2;
p[2]=&a3; 

二、行指针 

二维数组用的东西 
比如 
a[5][5] 
a[0]就是一个行指针 
也是a[0]这一行的这个一维数组的首地址 
也就是说a[0]的地址和a[0][0]的地址还有a是同一个地址 
a[0]就是{a[0][0],a[0][1],a[0][2],a[0][3],a[0][4]}这个数组的首地址 
a[0]+1就是指向下一行a[1]了 
如果一个指针数组(一维的) 
它的成员每一个指针都指向一个一维数组 

那么他们都可以理解为行指针(JAVA里的好像就莫的二维数组,要用多维数组好像就要这么构造

三、定义

数组指针(也称行指针)
定义 int (*p)[n];
()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。

如要将二维数组赋给一指针,应这样赋值:
int a[3][4];
int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。
 p=a;        //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0]
 p++;       //该语句执行过后,也就是p=p+1;p跨过行a[0][]指向了行a[1][]

所以数组指针也称指向一维数组的指针,亦称行指针。

指针数组
定义 int *p[n];
[]优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组,它有n个指针类型的数组元素。这里执行p+1是错误的,这样赋值也是错误的:p=a;因为p是个不可知的表示,只存在p[0]、p[1]、p[2]...p[n-1],而且它们分别是指针变量可以用来存放变量地址。但可以这样 *p=a; 这里*p表示指针数组第一个元素的值,a的首地址的值。
如要将二维数组赋给一指针数组:
int *p[3];
int a[3][4];
for(i=0;i<3;i++)
p[i]=a[i];
这里int *p[3] 表示一个一维数组内存放着三个指针变量,分别是p[0]、p[1]、p[2]
所以要分别赋值。

这样两者的区别就豁然开朗了,数组指针只是一个指针变量,用来指向二维数组的,它占有内存中一个指针的存储空间。指针数组是多个指针变量,以数组形式存在内存当中,占有多个指针的存储空间。
还说明的一点就是,同时用来指向二维数组时,其引用和用数组名引用都是一样的。
比如要表示数组中i行j列一个元素:
*(p[i]+j)、*(*(p+i)+j)、(*(p+i))[j]、p[i][j]

 

优先级:()>[]>*

8155源码编译DSP(ubuntu环境下) 一.设置环境变量 -users:/$ sudo gedit ~/.bashrc #set adsp cdsp tools path #export ARMLMD_LICENSE_FILE=<LICENSE FILE INFO> #export ARMTOOLS=RVCT221 #export ARMROOT=/pkg/asw/compilers/arm/ADS1.2 #export ARM_COMPILER_PATH=/pkg/qct/software/arm/RVDS/2.2BLD593 阅读详情

相关推荐

【verilog语法详解:从入门到精通】

Verilog语法详解:从入门到精通 摘要:本文系统讲解Verilog硬件描述语言的核心语法与应用。Verilog作为数字电路设计标准,具有并行执行、硬件映射和层次化三大特点。文章从基础语法框架入手,详细介绍了模块定义、端口类型(input/output/inout)声明规范,以及线网型(wire)和寄存器型(reg)两种核心数据类型的区别与应用场景。重点讲解了组合逻辑(assign连续赋值)和时序逻辑(always块)的实现方式,包括阻塞赋值(=)与非阻塞赋值(<=)的关键差异。此外,还涵盖了参数(

m0_58476824的博客 4682

数组指针和指针数组的区别

也就是说一个指向了“数组的指针”可以说是指向了数组的首地址 并且可以通过指针间接来操作数组 数组指针自然对应的也是二维数组

qq_61912284的博客 138

CATIA V5新手必看:从零开始的界面导航与基础操作指南(附常见问题解决)

本文为CATIA V5新手提供全面的界面导航与基础操作指南,涵盖核心工作区解析、文件管理规范、视图操作秘籍及常见问题解决方案。通过详细的步骤说明和实用技巧,帮助用户快速掌握这一工业设计标杆软件,特别适合从SolidWorks、AutoCAD等软件过渡的用户。

b9c0d的博客 529

指针的使用-----指针数组与指向数组的指针的区别

作为一个c++程序员学习指针是每个程序员的必经之路,也是有许多人遇到指针从入门到放弃的门槛。提到指针就不得不提到数组然而这一块也是非常容易让人混淆的。下面通过两个例子来区别他们: (1)int *qishou[2]; 定义一个有两个元素的指针数组,每个元素都是一个指针变量。侧重于指针变量 #include <stdio.h> #include <stdlib.h&g...

deersack的博客 275

不用U盘也能装Ubuntu?手把手教你用EasyUEFI搞定双系统(附企业版资源)

本文详细介绍了无需U盘即可安装Ubuntu双系统的方法。通过使用EasyUEFI工具,在Windows环境下创建虚拟启动分区并配置UEFI引导,即可直接从硬盘启动Ubuntu安装程序。该方法特别适合开发者或技术爱好者快速搭建Linux开发环境,操作安全便捷,无需额外物理介质。

weixin_29215391的博客 286

STM32智能头盔DIY全攻略:从心率监测到跌倒报警的完整实现

本文提供了基于STM32的智能头盔完整DIY实现方案,涵盖从心率监测到跌倒报警的核心功能。详细解析了系统设计、硬件搭建、软件算法及系统联调,重点介绍了STM32主控、MAX30102心率传感器和MPU6050姿态传感器的应用,并分享了跌倒检测算法与功耗优化等实战经验,为嵌入式开发与物联网创新项目提供全面指导。

sony5的博客 498

一文讲透C语言指针数组和数组指针的区别及使用方法

一、指针数组 1.什么是指针数组 指针数组是指一个数组,数组里面存放的元素是指针 2.指针数组的声明形式 指针数组的声明形式int *p[3] 3.指针数组的实质 指针数组的实质是声明了一个包含n个相同类型指针的数组,首先他是一个数组,其次数组存放的内容是指针 二、什么是数组指针 1.什么是数组指针 数组指针是一个指针,这个指针是一个指向数组的指针 2.数组指针的声明形式 指针数组的声明形式int (*p)[3] 3.数组指针的实质 数组指针是一个指向数组的指针,这个指针表示的是一个数组的起始地址,指向的数

qq_27998025的博客 2894

PCL RANSAC拟合直线并插值

空间直线线性插值的原理与实现方法。

点云侠的博客 136

C语言指向数组元素的指针变量的定义和赋值

C语言指向数组元素的指针变量的定义和赋值

qq_48516121的博客 5956

第9.3章 从CMake基础到自动驾驶实战:构建跨平台C/C++项目的全能指南

《CMake构建实战:项目开发卷》精要指南 本文系统梳理了许宏旭《CMake构建实战》核心内容,涵盖C++构建全流程: 基础构建:详解MSVC/GCC编译器使用、Makefile编写及静态/动态库构建方法 CMake核心:解析语法结构、变量控制、文件操作等关键命令,阐述项目全生命周期管理 实战应用:通过快速排序、手写数字识别项目演示现代CMake实践,特别针对自动驾驶领域给出多传感器融合、SLAM等场景的CMake配置方案 特色价值:本书填补了官方文档实例不足的空白,提供300+代码示例,是掌握工业级C++

行知SLAM 1343

Openclaw第3章:进阶部署

本章面向需要在特定环境中稳定运行 OpenClaw 的用户,介绍 Windows、Linux、Docker 以及 Cloudflare Workers 四种进阶部署方式。每种方式各有侧重:Windows 部署适合桌面用户日常使用,Linux 部署适合开发者,Docker 部署适合追求环境隔离的运维场景,Cloudflare Workers 部署则适合希望获得全球边缘网络加速的用户。读者可根据自身环境和需求选择合适的方案,完成本章后可继续阅读第4章了解维护升级流程。

Maynor的博客 1295

第三节 数组的指针和指向数组的指针变量

目录 一、指向数组元素的指针变量的定义和赋值 二、通过指针引用数组元素 三、数组名作为函数参数 四、指向多维数组的指针和指针变量探究 五、指针数组和数组指针 一、指向数组元素的指针变量的定义和赋值 数组指针是指数组的开始地址(首地址),数组元素的指针就是数组元素的地址。 a[3]=6;下标法引用数组元素,也可以用指针引用数组元素。 int a[5]={5,6,7,8,9};能引用的是0--4,只要是数组,那么数组元素的内存一定是紧挨着的,从首地址开始以数据类型所占字节进行叠加。

weixin_61891020的博客 5625

【如何学习CAN总线测试】——AUTOSAR网络管理自动化测试(CAPL源码)

上一章介绍的是AUTOSAR网络管理如何测试、用例设计,对于不满足手工测试的同学,本章就介绍AUTOSAR网络管理自动化测试。

测试领域技术分享 6237

指向数组的指针变量和指针数组的区别

代码】指向数组的指针变量和指针数组的区别。

qdacm_lxg的博客 170

NTscan扫描工具

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

STM32F407中文手册

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

C++数组名与指向数组首元素的指针的关键区别

C/C++中数组名与指针虽在语法上相似,但存在本质区别。数组名是常量指针,包含数组大小信息,不可重新赋值或自增;而指针是变量,仅存储元素类型地址,支持自增和重新指向。关键差异体现在类型信息、赋值能力、sizeof结果和内存分配方式上。数组名在函数参数传递时会退化为指针,需显式传递数组大小。理解二者的静态/动态特性差异,可避免越界访问和内存泄漏等问题,正确应用于不同场景。

弘羽 1055

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

指针常量、常量指针、指向常量的指针常量的区别以及数组名的本质

1、指针常量(*const):对应指针变量,即指针本身是常量,指针指向的内容可以被修改。 数据类型 * const 指针变量=变量名(或取地址); int* const p; 2、常量指针(const*):常量的指针,即指针指向的内容不能被修改,但指针本身是变量,可以被修改。 数据类型 const * 指针变量=变量名(或取地址); int const* p...

yhblog的博客 586

VC中sqlite的使用

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

指针数组、指向指针的指针变量、指向一维数组的指针变量 区别联系

8.3 指针数组与指向指针的指针变量    8.3.1 指针数组     如果数组元素都是相同类型的指针,则称这个数组为指针数组。所谓相同类型的指针是说指针所指向的对象类型是相同的。    例如,语句int *p[5];定义了一个指针数组。在指针数组的定义中有两个运算符:*和[],运算符[]的优先级高于*,所以*p[5]等价于*(p[5]),p[5]表示一个数组,而*表

饿的神啊 7719

字符串作为数组和用指针指向的字符串的区别

• 用指针指向的字符串:当使用指针指向字符串时,如果字符串是字面量,则它通常是在只读数据段中分配的。• 用指针指向的字符串:指针指向的字符串的生命周期取决于指针所指向的内存区域。• 字符串作为数组:当字符串作为数组定义时,它通常是在栈上分配的(除非是在函数外部定义的静态数组或在堆上动态分配的)。• 用指针指向的字符串:如果指针指向的是字符串字面量,则尝试修改字符串的内容是未定义行为(通常会导致程序崩溃)。• 用指针指向的字符串:字符串指针是一个指向字符的指针,该指针指向一个以空字符结尾的字符数组。

slty_123的博客 596

指向结构体变量的指针与指向结构体数组的指针使用时的区别

指向结构体变量的指针与指向结构体数组的指针在使用时的区别就是:指向结构体变量的指针,在使用时这样写:struct rsol v;struct rsol *m;m = &amp;v;指向结构体数组的指针,在使用时这样写:struct edc hj[5]={1,2,3,4,5};struct edc *k;k = hj;因为结构体数组hj本身就是一个地址(数组的起始地址),所以在使用时不加‘&amp;...

; 2938

指向一维数组的指针与指向一维数组中的元素的指针的区别

先看几段代码吧: 1. 分析:int (* p)[4]; p=&a(而不是p=a); 则*p =a ,表示指针p指向含有4个元素的一维数组a,而不是指向数组a的元素, 故p+1=&a+1。又因为数组a为int型,每个元素占4B,每行4个元素,故a+1与a的值应该相差16,所以若p是指向一维数组a,那么p+1与p应该也相差16,运行结果确实如此,可见p确实是指向一维数组a的指针。 2. 运行结果: 在VC++6.0中: 在Visual Studio Code中: 分析:代码2与代码1的唯一区别就是代码2中是令

太阳当空照,花儿对我笑,微风轻轻拂,心情无限好。 425

指针函数 与 函数指针 以及 指针的指针 与 指向指针数组的指针 的区别

一、 在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义: 1、指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针      类型标识符    *函数名(参数表)       int *f(x,y);   首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变

wodemaoheise的博客 467

c语言 指针 指向 数组指针的指针,c语言知识:数组指针和指针数组的区别

c语言知识:数组指针和指针数组的区别指针数组和数组指针,这两个名字不同当然所代表的意思也就不同,下面是其区别,欢迎阅读:指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针数组指针:a pointer to an array,即指向数组的指针还要注意的是他们用法的区别,下面举例说明。int* a[4] 指针数组表示:数组a中的`元素都为int型指针元素表示:*...

weixin_33817046的博客 293

深入理解指针、指向数组的指针和数组名的的区别

首先我们来看一段程序: #include int main(int argc,char *argv[]) { int numbers[5] = {1, 2, 3, 4, 5}; printf("&numbers: %p\n", &numbers); printf("&numbers+1: %p\n", &numbers+1);

FreeeLinux's blog 1002

指针笔记(指针数组和指向数组的指针,数组中a和&a的区别等)

int *p[4]和int (*p)[4]有何区别?前者是一个指针数组,数组大小为4,每一个元素都是一个指向int的指针后者是指向int[4]类型数组的指针以上代码若运行会报如下错误main函数中定义的a数组本质是一个指向int[2]的指针,而函数形参则是一个指针数组,即形参的a是一个二维指针,所以会报错类型不匹配若将形参改为int (*a)[2]则编译通过。

AGNING的博客 683

指向行数组指针和指针数组的区别

首先声明,我是一个菜鸟。一下文章中出现技术误导情况盖不负责 说这个之前先做个优先级准备: 优先级 ( ) > [ ] > * 也就是说 int *a[10]可以看成是 int* a[10],这就可以懂得成 a 是一个int*类型的数组,这个数组有10个 int*的数据,也就是有10个指针,所以也叫指针数组。 既然指针数组...

weixin_30902251的博客 350

数组指针——指向数组首元素和指向数组的区别

指向数组 指向数组首元素 数组指针

hambaga的博客 6052
上一篇: 检查内在泄漏的方法
下一篇: 哈希表(散列表)
firefly_2002
博客等级 码龄14年 434粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值