目录

  • 1 用指针访问数组的三种方式
  • 2 一维数组做函数的参数
    • 2.1 方法一
    • 2.2 方法二
  • 3 指针自增自减运算

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;
  • 若指针P1P2指向同一数组(只有这样相减才有意义),执行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语言-一维数组与指针相关推荐

  1. c语言如何用指针操作一维字符数组,C语言中数组和指针的互操作

    C是一种怀旧的语言,因为它的历史很久远,然而自从各种面向对象的编程语言的相续出现让它的影响力日减.当然了,这是无可非议的,但是C的高效性是其他语言无妨比拟的,所以我们有必要把握其中的精华与奥妙,也就有 ...

  2. C语言之指向一维数组的指针

    int array[5] = {1, 2, 3, 4, 5}; // 定义数组 int *intptr = array; // 定义指向数组元素的指针 int (*arrayptr)[5] = &am ...

  3. c语言用一维数组求字符串,c语言一维数组练习题.doc

    c语言一维数组练习题 精品文档2016全新精品资料-全新公文范文-全程指导写作 –独家原创 PAGE1 / NUMPAGES1 c语言一维数组练习题 4.1内容概述 本章主要介绍了数值数组和字符数组的 ...

  4. c语言一维数组课件,第9章:c语言一维数组课件

    第9章:c语言一维数组课件 随着竞争日益激烈,酒店嘴中的肥肉被大肆抢夺,各大酒店在这场竞争中几乎"溃不成军":就娱乐来讲,大城市里的娱乐场所遍地开花,酒店娱乐业的收入也是日益萎缩. ...

  5. 小白来学C语言之数组与指针

    前言:写东西一样要保存,ctrl s常按着,写了一晚上,第二天全没了,快要哭了.要不是自己在指针这里浪费了很多时间,我可能就不会重新写了,希望大家能看懂学会,别再走弯路了. 1.内存四区 . a) 代 ...

  6. c语言中的一维数组的定义,C语言一维数组的定义和引用

    <C语言一维数组的定义和引用>由会员分享,可在线阅读,更多相关<C语言一维数组的定义和引用(5页珍藏版)>请在人人文库网上搜索. 1.C语言一维数组的定义和引用在程序设计中,为 ...

  7. C语言:数组与指针详解

    文章概述 本文章讲述关于C语言的主要内容如下:   1.字符数组.2.一维数组与指针.3.二维数组与指针.4.字符串与指针.5.字符串指针数组 一.字符数组   定义一维数组时,系统会在内存中为其分配 ...

  8. c语言一维数组转化为二维矩阵,js将一维数组转化为二维数组

    遇到的问题: 后端返回的是一组一维数组,但是需要展示的格式是二维数组,常见的场景举例:后台返回10个长度的数组,需要分成3个一组展示在banner上. 例:[1,2,3,4,5,6,7,8,9,10] ...

  9. C语言一维数组、二维数组、结构体的初始化

    C语言数组的初始化表示方法 一.C语言一维数组初始化: (1)在定义数组时对数组元素赋以初值.如: static int a[10]={0,1,2,3,4,5,6,7,8,9}; 经过上面的定义和初始 ...

最新文章

  1. 我的第一个ASP类(显示止一篇下一篇文章)
  2. 接下来学习计划2020.11.9
  3. Jmeter测试监控 Summary Report界面
  4. java中的Iterator和Iterable 区别
  5. mysql快速删除大表数据部分数据_mysql删除大表的部分数据
  6. linux查看内存_【001】一文带你全面掌握Linux系统体系结构
  7. 富文本功能实现vue3.0
  8. 研发项目管理软件对比调研报告
  9. 闯关IPO,“3D云设计第一股”群核科技值不值20亿美金估值?
  10. LEACH算法改进 SEP算法源代码
  11. 火车预购票系统设计JAVA_火车订票系统的设计与实现
  12. MATLAB图像处理(一)——计算机图形学之图像形状识别
  13. 20160213为王伟写的挪点号,也可以叫它为文字避让
  14. NRF52840学习历程(十一)幻彩RGB灯之WS2812B
  15. SpringBoot项目实现微信小程序登录步骤
  16. 【历史上的今天】11 月 28 日:中国顶级域名 CN 被注册;上世纪最大的论坛诞生;首个 Fortran 程序开发者逝世
  17. logrus固定当天日志文件名称源码修改
  18. allgro pcb铜皮编辑_关于修割铜皮 - Cadence allegro PCB 教程
  19. 【结构体】 结构体引用、结构体数组指针、包含结构的结构体
  20. 网页设计HTML个人笔记

热门文章

  1. linux下安装nagios
  2. SHOP++ JTM使用帮助
  3. 渗透测试-基于白名单执行payload--Compiler
  4. spark streaming 消费 kafka入门采坑解决过程
  5. CentOS7下安装ELK三件套
  6. (四)学习CSS之position、bottom、left、right和top属性
  7. 自己挖的坑自己填--JVM报内存溢出
  8. post发送 ArrayBuffer
  9. 路飞学院-Python爬虫实战密训班-第2章
  10. 1008 N的阶乘 mod P ——51Nod(同余定理)