C语言-一维数组与指针

C语言指针与一维数组 一维数组和指针 举一个超棒的例子: 结果: 从上面可以看出: a相当于&a相当于&a[0]都是数组a[]的起始地址 p=a; 相当于 p=&a[0]; 阅读详情

1 用指针访问数组的三种方式

#include <stdio.h>

int main()
{
    int array[5] = {5, 10, 15, 20, 25};
    int i;
    int * ptr_array = array;
    for(i = 0; i < 5; i++)
    {
        printf("第%d个元素的值为%d\t地址为%p\n", i + 1, ptr_array[i], &ptr_array[i]);
        printf("第%d个元素的值为%d\t地址为%p\n", i + 1, *(ptr_array + i), ptr_array + i);
        printf("第%d个元素的值为%d\t地址为%p\n", i + 1, *ptr_array, ptr_array);
        ptr_array++;    //每次循环都会移动指针,要注意重置指针的位置
    }
    return 0;
}
  • 递增运算符 ++ 比指针 * 和的优先级高,如 *ptr_array ++
  • array 是数组名,也是数组的首地址
  • 数组名不能进行加减操作
  • array 的值和 &array[0] 的值相同
  • 指针变量可以指向数组元素
int * ptr_array = &array[4]; // array[4]相当于*(ptr_array + 4)
int * ptr_array = array + 4;
  • 若指针P1和P2指向同一数组(只有这样相减才有意义),执行P2-P1,结果是P2-P1两个地址距离,即地址数值差除以数组元素长度。
  • 指针可以++,--,或者加上一个数,减去一个数,两个指针相加无意义,相减只有在上一条情况下才有意义。

2 一维数组做函数的参数

2.1 方法一

int func(int arr[], int n);
int func(int [], int); // 在声明时可以省略形参名

2.2 方法二

这种指针形式仍然可以在函数内用arr[n]的形式表示数组元素。

int func(int *arr, int n);
int func(int *, int); // 在声明时可以省略形参名

3 指针自增自减运算

若指针p指向数组a

  • *p++ = *(p++),先引用,再自增
  • *(++p),先自增,再引用
  • ++(*p) = ++a[0],数组元素加1
    若指针p指向数组a中第i个元素
  • *(++p) = a[++i]
  • *(p++) = a[i++]
  • *(--p) = a[--i]
  • *(p--) = a[i--]
深入理解C语言一维数组与指针:数组指针的概念与应用 C语言中,数组名取地址(&arr)会产生"数组指针"(int()[N])而非普通指针(int),二者步长不同。本文通过代码示例详细解析了数组指针的三种定义方法:1)typedef定义数组类型后声明指针;2)typedef直接定义数组指针类型;3)直接声明数组指针变量。重点演示了数组指针的步长特性(偏移整个数组长度)和元素访问方式(*p)[i],帮助解决数组名取地址时的类型不匹配问题。文章包含完整代码及预期输出,适合C语言学习者理解数组与指针的核心差异。 阅读详情

相关推荐

【C语言】指针与一维数组笔记(二)!

目录二、指针能指向数组?为啥?1.指针与一维数组(1)指针变量处理数组(2)数组的地址(3)通过一维数组名所代表的地址存取数组元素(4)通过指针运算符“ * ”存取数组元素(5)通过带下标的指针存取数组元素(6)等价规则2.移动指针及两指针相减运算(面向数组)(1)移动指针(2)两指针相减运算(面向数组)3.指针比较4.指向字符串的指针(1)字符指针(2)字符指针与字符数组的区别①使用字符指针处理字符串②使用字符数组处理字符串(3)删除一个字符串中所有的空格字符 二、指针能指向数组?为啥? 1.指针与一维数

Sakura给爷pwn全场 653

【C语言】一维数组传参

关于一维数组传参时的一些需注意的细节问题

qq_73575817的博客 1249

C语言指针重点难点整理(详解)(包括一维数组,二维数组的元素指针,二维数组的行指针做函数参数,指针数组,行指针数组)

C语言指针重点难点整理(详解)(包括一维数组,二维数组的元素指针,二维数组的行指针做函数参数,指针数组,行指针数组) 笔者学指针之前: 呵呵,听闻指针是C语言的难点,我倒要见识一下,到底有多难 笔者学完指针之后: 我还是收拾行囊,离开吧! 但是,在我的内心经过反复的挣扎,终于我决定,我要战胜它,现在,笔者已经大概弄清楚了指针的知识点,今天周末,刚好整理一下指针的一些难以理解的地方,和一些重点...

ztlzlzl的博客 4051

指针引用一维数组学习

所谓数组元素的指针就是数组元的地址 1. 指针如何引用数组 int a[10] = {1,3,5,7,9,11,13,15,17,19}; int * p; p = &a[0]; 其中数组名 "a" 不代表整个数组,只代表数组首元素的地址。 p = &a[0] 等价于 p = a; 2. 在引用数组元素时指针的运算 当指针指针指向数组元素的时候 可以 p+1 表示指向下一个元素a[1] 如 p+1 p-1 p++,++p; p–,--p 但两个指针相减,如p1-p2(只有

wangwanli000的博客 1691

C语言基础 -35 指针_指针与一维数组

book@100ask:~/C_coding/CH01$ cat arr.c #include <stdio.h> #include <stdlib.h> int main() { int a[3] = {1,2,3}; int i; for(i = 0 ; i < sizeof(a)/sizeof(a[0]); i++) printf("%d ",a[i]); printf("\n"); exit(0); } book@100ask:~/C_c...

我思故我在! 343

C语言:二维数组与一维数组指针的关系

二维数组可以看作是一个数组的数组,通常用于表示矩阵、表格等数据结构。数据类型 数组名[行数][列数];这表示我们有一个包含 3 行 4 列的二维数组,数组中共有 12 个整数。本文详细讲解了 C 语言中的二维数组和一维数组指针的概念和使用方式。二维数组是由多个一维数组组成的,数组元素在内存中是按行优先存储的。一维数组指针是指向数组首元素的指针,可以通过指针运算访问数组元素。二维数组指针可以通过指针访问二维数组的元素,理解二维数组与一维数组指针之间的关系是深入理解 C 语言的关键。

m0_62599305的博客 1012

C语言总结

C语言基础知识总结

m0_63600560的博客 1358

【C语言基础入门】二级指针、一维数组与指针、二维数组与指针

在学习C语言的过程中,理解指针的概念是非常重要的。指针提供了一种直接访问内存地址的方式,使得我们可以更加灵活地管理数据和内存。在本文中,我们将介绍C语言中的二级指针、一维数组与指针,并通过通俗易懂的语言和示例代码来帮助读者理解这些概念。C语言中的指针提供了强大的工具,通过了解和灵活运用指针,我们能够更有效地操作内存,实现复杂的数据结构和算法。二级指针为多级指针的概念提供了基础,而一维数组与指针的结合则在处理数组数据时提供了便捷的方式。在实际编程中,灵活运用这些概念可以让程序更加高效、清晰。

m0_62599305的博客 3772

c语言,一维数组指针

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

wuyiyu_的博客 4872

本地部署 Bolt.new - 小学生都能轻松搭建AI编程环境

本地部署 Bolt.new - 小学生都能轻松搭建AI编程环境

engchina的专栏 8624

中微8S6990实战:5分钟搞定GPIO配置与按键中断(附避坑指南)

本文以中微8S6990单片机为例,详细讲解了GPIO按键中断的快速配置方法与实战避坑指南。内容涵盖GPIO初始化、中断配置、软件消抖优化及低功耗唤醒等关键步骤,并提供了利用逻辑分析仪进行调试验证的有效方法,帮助开发者快速构建稳定可靠的嵌入式按键交互系统。

weixin_29194817的博客 280

C语言 一维数组与指针

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

jia_03的博客 2736

关于 ABAP OPEN SQL 的动态 WHERE 条件和 Dynamic Selections

ABAP动态查询技术解析 本文介绍了ABAP中实现灵活数据库查询的动态选择技术,通过FREE_SELECTIONS函数组实现用户自定义查询条件。核心内容包括: 传统固定WHERE条件的局限性,无法满足业务多变需求 Dynamic Selections机制的工作原理,使用FREE_SELECTIONS_INIT初始化、FREE_SELECTIONS_DIALOG交互 完整Demo程序演示如何构建通用表数据浏览器: 用户输入表名后校验权限 调用动态选择函数生成条件 动态拼接WHERE子句执行查询 使用CL_SA

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 676

新手必知之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

OpenClaw 生成测试用例

OpenClaw 只是躯干,Skills 才是灵魂。很多同学觉得 OpenClaw 没用,就像是买了一台顶级电脑却没装操作系统。通过这四步走,不仅可以学会如何让 AI 干活,更重要的是,可以学会如何管理 AI 的能力。

十二测试录 737

学 Simulink—— 基于高频方波电压注入的表贴式永磁电机无感控制仿真

本文手把手教授基于Simulink的高频方波电压注入法实现表贴式永磁同步电机(SPMSM)无传感器控制。针对表贴式电机微弱凸极特性(Lq/Ld≈1.05-1.15),详解方波注入相比正弦注入的优势:通过5kHz方波(PWM频率半值)集中能量提升信噪比,并采用相邻周期电流直接相减的零延迟分离技术。系统架构包含高频注入器、无滤波器信号分离模块、锁相环观测器和磁饱和极性辨识等关键环节,提供参数设置经验(如注入幅值10-15%Vdc)和典型性能指标(位置误差<0.2rad)。特别强调工程实现要点:PWM同步时

xiaoheshang_123的博客 168

指针与一维数组( c语言)

摘要:C语言中指针与一维数组关系密切。数组名实质是常量指针,指向首元素地址,两者可通过不同语法访问元素(如arr[i]与*(p+i))。指针算术基于元素大小自动计算地址,函数参数传递时数组退化为指针。动态内存分配需使用malloc/free。常见错误包括指针越界、sizeof误用等。掌握这些概念能提升内存管理效率和代码健壮性,特别需注意数组名不可修改、地址连续性等特性。(149字)

一叶之秋的博客 898

代谢组数据分析(二十一):通过MetaboAnalystR标准化构建sPLSDA预测模型

本文介绍了如何使用R语言中的MetaboAnalystR包和mixOmics包进行代谢组学数据的标准化和sPLSDA分析。MetaboAnalystR包用于数据预处理,包括数据初始化、清洗、补足、过滤和标准化等步骤,以确保数据质量。mixOmics包则用于sPLSDA分析,通过Lasso惩罚进行变量选择,并建立分类模型。文章详细说明了安装和加载相关R包的步骤,并提供了数据导入和预处理的代码示例。最后,强调了数据预处理的重要性,以确保后续分析的准确性和可靠性。

专注生信领域 2426

C语言——指针与一维数组

其目标是将数组分为两部分,左边部分小于基准数t,右边部分大于基准数t。(大都选择数组第一个元素为基准数t)其结果依旧是一个指针,新的指针是在原来的地址基础上加n * (sizeof(基类型))个字节。两指针相见必须保持类型一致,其差的结果为相差基类型的个数。*(a + 1)表示第一个元素的值,*(a + 1)等价于a[1] ,值为2;p 代表数组首元素的地址,即*p表示数组首元素的值,所以为1;++p表达式加了,p的值也加了1,所以*++p的值为3;p++表达式没加,所以*p++也是首元素的值为1;

2401_84676053的博客 495

【信息系统项目管理师】高分论文:论信息系统项目的整合管理(绩效考核系统)

我们将项目管理计划中的子计划包括项目范围、进度、成本、质量管理计划,过程改进计划,人力资源管理计划,风险、采购管理计划,干系人管理计划,项目范围、成本、进度基准作为依据,查看项目的各个方面,通过组织全体团体成员会议来解读由各监控过程提供的信息,之后我与项目管理团队一起制订所需措施,确保项目绩效达到预期要求。在一个项目中,变更是必然的,也是不可避免的,进度拖延,成本失控,客户有新的需求等都会引起项目的变更。在本项目中,我要求有处于工作状态的产品,开发人员才可以对其任意修改,修改完成后,重新入库即可。

数据知道的博客 6887

《测控仪器设计课后习题答案-浦昭邦-王宝光

《测控仪器设计课后习题答案-浦昭邦-王宝光 1.1. 测控仪器的概念是什么? 测控仪器则是利用测量和控制的理论,采用机、电、光各种计量测试原理及控制系统与计算机相结合的一种范围广泛的测量仪器。 1.2. 为什么说测控仪器的发展与科学技术发展密切相关? 仪器仪表的用途和重要性— 遍及国民经济各个部门,深入到人民生活的各个角落,仪器仪表中的计量测试仪器与控制仪器统称为测控仪器,可以说测控仪器的水平是科学技术现代化的重要标志。 仪器仪表的用途: 在机械制造业中:对产品的静态与动态性能测试;加工过程的控制与监测;设

无名何许人的博客 2976

c语言指针与一维数组PPT,C语言课件:9-2指针与一维数组

《C语言课件:9-2指针与一维数组》由会员分享,可在线阅读,更多相关《C语言课件:9-2指针与一维数组(26页珍藏版)》请在人人文库网上搜索。1、第九章 指针,指针与一维数组,2,指针特别适用于访问在内存中连续存储的相同类型的数据。如:一维数组、二维数组等。,int a10; int *p; p = /通常指向首元素,以一维数组为例: 先定义一个指向类型为数组基类型的指针,再让指针指向某个数组元素...

weixin_35554273的博客 216

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

c语言一维数组指针变量,C语言基础-06-指向一维数组元素的指针

一、用指针指向一维数组的元素//定义一个int类型的数组inta[2];//定义一个int类型的指针int*p;//让指针指向数组的第0个元素p=&a[0];//修改所指向元素的值*p=10;//打印第一个元素的值printf("a[0]=%d",a[0]);输出结果:,说明已经通过指针间接修改了数组元素的值,跟指向一个普通int类型变量是一样的。 由于数组名代...

weixin_39978444的博客 2088

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C语言中的指针与一维数组

C语言中,利用指针既可以间接引用单个变量,也可以间接引用数组的元素 什么是指向一位数组元素的指针: 由于一维数组的元素本质上也是变量,因此,每个数组元素都有一个地址(指针)。 例如: int [10],*p,*q; p = &a[10]; q = &a[3]; 可以发现,这种数组元素地址的表示形式略显繁琐。 为了使用方便,C语言规定: 可以用一个一维数组的数组名,来代表这个数组中0...

HEMVER的博客 1731

c语言-指针与一维数组

原因就是上一轮循环的指针经过偏移最终停到了下标2也就是对应元素3的地址上,再进行一次同样的循环,那么他就会从元素3的地址继续向后偏移,但是我们这个数组的元素只有1,2,3,就导致它后面并没有地址和对应的元素进行访问。这里可以看到,元素1、元素2、元素3的地址分别是FE0C、FE10、FE14,是连续的,每隔一位差4,对应一个int(4个字节)的大小。可以通过指针偏移的方式来访问数组中下一位元素,因为数组元素内存是连续的,每偏移一位,跨度(增量)都是4个字节。数组名=数组首地址=数组的第一个元素的地址;

Heartoxx的博客 492
上一篇: C语言-转义字符注意事项
下一篇: C语言-二维数组与指针
syzdev
博客等级 码龄9年 852粉丝 149原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值