一维数组与指针

一维数组与指针的关系与应用 一维数组是由相同数据类型的元素按顺序排列的一组数据。数组中的每个元素都通过索引来访问,索引从0开始。数据类型 数组名[元素个数];指针是一个变量,它的值是另一个变量的内存地址。指针可以用来直接操作内存,从而使程序更高效灵活。数据类型 * 指针名;例如,声明一个指向intint *ptr;在C语言中,一维数组和指针的关系密不可分。数组名本身就是一个指针,指向数组的第一个元素。通过指针,我们可以灵活地访问和操作数组的元素。指针使得我们能够在数组的基础上实现更复杂的功能,如动态内存分配、函数传参等。 阅读详情

当定义一个一维数组时,系统会在内存中为该数组分配一个存储空间,其数组的名称就是数组在内存中的首地址。若再定义一个指针变量,并将数组的首地址传给指针变量,则该指针就指向了这个一维数组。
例如:

int *p, a[10];
p = a;

这里a是数组名,也就是数组的首地址,将他赋值给指针变量p,也就是将数组a的首地址赋给p。也可以写成如下形式:

int *p, a[10];
p = &a[0];

展示一个完整的程序:

#include<stdio.h>
#include<stdlib.h>
/* 输出数组中的元素.c */
/* written by Chen Gengru */
/* updated on 2019-1-2 */
void main()
{
	int i, a[5], b[5], *p, *q;
	p = &a[0];
	q = b;
	
	printf("请输入一组数组:\n"); //得到数组a 
	for (i = 0; i < 5; i++)
	{
		scanf("%d", &a[i]);
	}
	
	printf("请输入另一个数组:\n"); //得到数组b
	for (i = 0; i < 5; i++)
	{
		scanf("%d", &b[i]);
	} 
	 
	printf("数组a:\n"); //输出数组a
	for (i = 0; i < 5; i++)
	{
		printf("%5d", a[i]);
	}
	printf("\n");
	
	printf("数组b:\n"); //输出数组b
	for (i = 0; i < 5; i++)
	{
		printf("%5d", *(b+i));
	}
	printf("\n");
	
	printf("数组a元素的地址:\n"); //输出数组a元素的地址
	for (i = 0; i < 5; i++)
	{
		printf("%d\n", p+i);
	}
	printf("\n");
	
	printf("数组b元素的地址:\n"); //输出数组b元素的地址
	for (i = 0; i < 5; i++)
	{
		printf("%5d\n", b+i);
	}
	printf("\n");
 } 

结果:
在这里插入图片描述
注意:
1,可以用a+n表示数组元素的地址,(a+n)表示数组元素
2,“
”,“&”的运算优先级比加减运算高,故表示第p+i的指针运算要带上括号*(p+i)

AC360变频器使用案例 AC360变频器使用案例! 阅读详情

相关推荐

Petalinux 2021.2 下 Qt组件编译报错?手把手教你修改bb文件搞定qt3d/qtquickcontrols2

本文详细解析了Petalinux 2021.2环境下Qt组件(如qt3d、qtquickcontrols2)编译报错的解决方案。通过修改bb文件或使用bbappend文件覆盖,有效解决`petalinux-build --sdk`命令执行时的源码获取失败或哈希校验不匹配问题,并提供验证与调试技巧,帮助开发者快速修复构建流程中断问题。

weixin_29188997的博客 216

指针数组和数组指针(非常易懂)

指针数组 指针与一维数组 当定义一个一维数组时,系统会在内存中为改数组分配一个储存空间,其数组的变量名就是数组的首地址。若定义一个指针变量,并将数组的首地址赋值给指针变量,则我们说该指针指向了这个一维数组。 例如: int *p,a[10]; p=a; //数组的变量名a就是数组的首地址 另一种赋值方式也可写为: int *p,a[10]; p=&a[0]; //a[0]的地址也是数组的首地址 ...

itszok的博客 10万+

保姆级教程:在Windows/Mac上从零部署清华Kronos股票预测模型(含Qlib数据更新避坑指南)

本文提供了一份详细的指南,帮助用户在Windows和Mac系统上从零部署清华Kronos股票预测模型,包括环境配置、模型权重获取、Qlib数据更新避坑等关键步骤。特别针对国内用户遇到的网络问题和数据更新不及时提供了解决方案,适合量化投资和金融科技爱好者快速上手。

weixin_29053577的博客 623

c语言,一维数组指针

文章目录前言一、一维数组指针的定义:二、一维数组指针的推导及使用:三、补充:总结 前言 今天我们讲一下一维数组指针。 一、一维数组指针的定义: 概述: 数组指针,就是数组类型的指针。数组里面的 每一个元素都是一个地址 。可以让 数组指针指向一个数组的地址 ,通过地址遍历数组的各个元素。 定义一维数组指针的步骤: int a[5] = {4,5,6,7,8}; / / 定义一个数组 int (*p)[5] = &a; / / 定义一个数组类型的指针指向数组a的地址 注意: int [5]是数组类

wuyiyu_的博客 4872

Halcon-AOI外观缺陷检测系列

Halcon-AOI外观缺陷检测系列

Jumy_S的博客 1668

MicroPython ubluetooth 库详细介绍

MicroPython的ubluetooth库为蓝牙通信提供了强大的支持,使得开发者能够在MicroPython环境下轻松实现蓝牙设备之间的通信。其中ubluetooth库为MicroPython提供了强大的蓝牙通信功能,使得开发者能够轻松地在各种支持MicroPython的硬件平台上实现蓝牙设备之间的通信。它提供了一系列的函数和类,用于实现蓝牙设备的扫描、连接、数据传输等功能。- 上述代码中,首先创建了一个蓝牙服务和一个特征,然后可以通过read和write函数读取和写入特征值。# 处理连接成功事件。

m0_46311182的博客 1762

一维数组

定义: 数组名字符合标识符的书写规定(数字、英文字母、下划线)。 数组名不能与其它变量名相同,同一作用域内是唯一的。 方括号[]中常量表达式表示数组元素的个数,inta[3]表示数组a有3个元素,其下标从0开始计算,因此3个元素分别为a[0],a[1],a[2]。 定义数组时[]内最好是常量,使用数组时[]内即可是常量,也可以是变量。 举例: #include <stdio.h&...

嵌入式 2321

学习Fidder主要掌握的技术——流量篡改

本文介绍了Fiddler工具的三种常用调试方法:1)本地映射-通过保存修改JSON响应文件实现接口数据模拟;2)Composer接口调试-通过修改请求参数快速测试接口异常处理;3)断点调试-在请求/响应过程中拦截并修改数据。这三种方法分别适用于前端开发、接口测试和健壮性验证等场景,能够有效提高调试效率。操作步骤包括保存响应、修改数据、配置规则等关键环节,并提供了详细的界面操作指引。

2301_79022773的博客 353

一维数组指针详解

数组是一个变量,可以存储多个相同类型的元素。对数组元素取地址,得到的是元素地址,而对数组名取地址,得到的就是数组的地址,也称为数组指针。在 C 语言中,数组指针的类型为指向数组类型的指针,即 int (*p)[5],其中 int [5] 是数组类型,*p 则是指向该数组类型的指针变量。需要注意的是,因为中括号的优先级高于 *,所以必须加上小括号,否则会被解释为指针数组。

weixin_47712251的博客 1125

【示波器专题】示波器探头的原理深入——有源探头之差分有源探头

差分有源探头是一种特殊的有源探头,与普通单端有源探头的区别在于其前端的放大器是差分放大器。差分放大器的好处是可以直接测试高速差分信号,同时其共模抑制比高,对共模噪声的抑制能力比较好。...

一点硬件 2626

免杀思路总结

免杀思路总结 1.免杀技术简介 1.免杀的重要性 2.免杀的难度 3.杀毒软件的排行 国外 国内 1 、Bitdefender 1、360 2 、Norton 360 2、智量安全(没测过,据说很厉害) 3 、Kaspersky 3、火绒安全 4 、Webroot 4、金山独霸 5 、Trend Micro 5

LiBai'S BLOG 1万+

C语言 一维数组与指针

那么第二组的问题出在哪里呢,如果不对*pint4加括号,打开后就会变成**(pint4+i),那么pint4指向的将不再是目标数组,所以无论怎么进行*操作都不会得到真正的数据。在指针数组中,每个成员都是一个指针变量,它可以对同类型的数据进行存储,在获得真正数据时就是要对此成员进行*操作,例如*p[1],对其进行进一步分析就会变为**(p+1),看起来就像二级指针一样。这里的as其实是数组中第零个元素,正常要写成&as[0],但是&as[0]拆: & *(as+0) ==> (as+0) ==> as。

jia_03的博客 2737

Mac安装Claude Code的3种方式及5类报错解决方案

介绍在Mac上安装Claude Code的3种实测可行方式(官方dmg、Homebrew+ARM原生构建、Docker容器化),并针对Gatekeeper签名验证失败、Rosetta 2内存对齐崩溃、Python ABI兼容性冲突等5类高频报错提供根因分析与可复现解决方案,覆盖M1–M3及Intel

weixin_28728443的博客 365

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

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

小小黑码王子的博客 2312

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C语言 指针与一维数组,指针遍历一维数组的多种方法

指针与一维数组: #include  void test1() {     //利用指针来修改数组元素     int a[2];     int *p;     p = &a[0]; //    p = a; 等效     *p = 10;     printf("%d\n",a[0]); } void test2() {     //遍历数组元素     int a

小乔的博客 9712

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

一维数组与指针的关系

一维数组与指针的关系 一维数组定义格式: 类型名 数组名 [数组长度] 例:int a [10] 指针变量的声明: 例:int *p 表示指向int型对象的指针 //指针变量增1,指针中存储的地址值增多少? #include <stdio.h> #include <stdlib.h> int main(void) { int a[4]={1, 2, 3, 4}; //定义一个一维数组 int *p; //定义一个指向int型...

z2366232723的博客 527

指针与一维数组

指针与一维数组 1.数组名 数组名本身就是一个指针(地址),它代表了数组的首地址,数组在内存中连续存放 对于一个数组a,a的值与&a[0]相等 int a[] = { 1,2,3,4,5 };int *p = a; printf("%p %p %p\n", a, &a[0], p); 我们发现三者地址相同 2.指针操作数组 1)把指针当作数组名来使用 格式:指针名[偏移位置] int a[] =

weixin_42864519的博客 192

新手必知之c语言一维数组与指针

一、简述一维数组与指针 (1)在C语言中,数组是占用一串连续的存储单元。数组中每个元素都可以看作一个变量,因此每个数组元素都有一个地址。 那么:int *p,a[5]={1,2,3,4,5}; 指针p的基类型是int,数组a的各个元素也是int类型的。我们用p=&amp;amp;amp;a[0],将指针p指向数据元素a[0]。由于数组元素在内存中是连续的,因此我们可以通过移动指针p来访问数组中的每一个元素。 (2...

Dxs4396的博客 2951

C语言:指针3(指针与一维数组)

指针与一维数组 一维数组名 ​ 一维数组名是个指针常量(不能改变) ​ 存放的是一维数组第一个元素的地址 下标和指针的关系 ​ 如果p是个指针变量, ​ 则p[i] 永远等价于 *(p+i) 理解: 定义数组a ,p指向a,则p = a 所以a[i] 等价于 p[i] ,表示第(i+1)个元素 所以&a[i] = &p[i] = (p+i) 所以a[i] = p[i] = *(p+i) 确定一个一维数组需要几个参数 ​ 【如果一个函数需要处理一个一维数组,则需要接收该数组的哪些信息

瘦詹姆的博客 855

一维数组和一维指针

码龄超过两个星期的可以划走了。新手练习一下写博客。写了一些一维数组的初始化和一维指针的基础知识

m0_60343477的博客 1998

指针知识梳理2-指针与一维数组

指针与数组的关系。

mark_0518的专栏 1032

一维数组的原理与指针的关系

我们知道,一维数组中,数组内嵌指针,可以将数组名理解为特殊的指针。 这个指针地址是数组首元素的地址,存取着数组首元素的地址。 数组中地址的划分与表示是从内存中首个元素头部开始的。 例如:定义数据类型为整形的一维数组a:int a[2]; 那么,数组名a就可以看作一个指针,它的的地址就是数组首位元素的地址,即&a[0],他的存取的地址t同样就是&a[0]。 当对指针a进行指针运算,实...

靡不有初,鲜克有终。 793

指针与一维数组间的关系

1. 一维数组元素的引用: [问题回顾] 使用指针和计数变量实现对数组元素的遍历访问. void Show(char S[], short N) { short i = 0; char *p = S;/* p指向数组S的首地址 */ while(i < N) { printf("%c", *(p + i)); i ++; } putchar('\n'); } [问题]经过实践验证, *(p + i) 等价于 .

weixin_42048463的博客 252

C/C++指针与一维数组 字符串的指针表示 指针数组和数组指针

1.一维数组的指针表示 int a[10]; int *p; p=&a[0]; 注意 数组名a其实是个指针常量,一次不可赋值 p=a; 和p=&a[0];是等价的,指针默认指向数组元素的首地址 可写成 int a[10]; int *p=a; 数组元素可以用下标a[i]表示,因此数组元素a[i]的地址可以表示为&a[i]或a+i那么形如*(a+i)是数组元素的指针...

lpblog的博客 1449

C语言——指针与一维数组的关联

C语言——指针与一维数组的关联与应用

2302_80345385的博客 905

C++中的一维数组与指针、一维数组用于函数参数

函数原型:注意,在Linux下,使用memcpy()函数需要包含头文件。

兴趣使然的编程菜鸟 1387
上一篇: 指针自加自减运算
下一篇: 数组指针的重新赋值
ChenGengru
博客等级 码龄8年 24粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值