C程序设计--指针(对 “ 数组 ” 进行输入输出操作)
指针引用数组元素
- 方法一、下标法 : 如a[i]形式
- 方法二、指针法 : 如*(a+i)、*(p+i)形式。其中a是数组名,p是指向数组元素的指针变量
** 问题:有一个整形数组a,有10个元素,要求输出数组中的全部元素**
- 下标法
#include<stdio.h>int main(){int a[5]={5,0,3,1,2};for(int i=0;i<5;i++){printf("%d ",a[i]);}printf("\n");return 0;
}
- 通过数组名计算数组元素的地址,找出元素的值
#include<stdio.h>int main(){//若需手动输入可以在循环中使用:scanf("%d",a+i);来代替scanf("%d",&a[i]);int a[5]={5,0,3,1,2};for(int i=0;i<5;i++){printf("%d ",*(a+i));}printf("\n");return 0;
}
或者:
#include<stdio.h>int main(){int a[5]={5,0,3,1,2};int *p=a; //另外用指针指向数组,但不能写成: int *p=&a;(错误原因:cannot convert from 'int (*)[5]' to 'int *')for(int i=0;i<5;i++){printf("%d ",*(p+i));}printf("\n");return 0;
}
补充说明:
#include<stdio.h>int main(){int a[5]={5,0,3,1,2};int (*p)[5]=&a; // 可以用指向一维数组的指针实现//(*p)[5]: //类型表示:int (*)[4];//含义:p为一个指针变量,指向含有5个元素的一维数组;//多用于多维数组的处理中;for(int i=0;i<5;i++){printf("%d ",*(*(p)+i));}printf("\n");return 0;
}
- 用指针变量指向数组元素
#include<stdio.h>int main(){int a[5]={5,0,3,1,2};int *p;for(p=a;p<(a+5);p++){printf("%d ",*p);}printf("\n");return 0;
}
用指针变量输入数据并输出数据
#include<stdio.h>int main(){int a[5];int *p=a;for(int i=0;i<5;i++){//输入操作scanf("%d",p+i);//等价scanf("%d",p++);//等价于scanf("%d",&a[i]);//等价于scanf("%d",a+i); //a代表数组首元素地址,它是一个指针型常量,程序运行期间值不变(不同于p),故不能用a++;}//输出方式一:用 a[i] 或用 *(a+i) ; 但不能使用a++(原因:a是指针型常量)for(i=0;i<5;i++){printf("%d ",a[i]);//等价于 printf("%d ",*(a+i));}printf("\n");p=a;//必须把指针重新指向a的首元素//输出方式二:用 *(p+i) 或者 *p++ ; 注意:要把指针重新指向a的首元素for(i=0;i<5;i++){printf("%d ",*(p+i));//等价于 printf("%d ",*p++);}printf("\n");//输出方式三:用*pfor(p=a;p<(a+5);p++){printf("%d ",*p);}putchar(10);//等价于printf("\n");return 0;
}
注意
- *p++ : 等同于 *(p++);因为++和 *同优先级;先引用p的值,实现 *p的运算,然后p自增1;
- *(p++) 不等同于 *(++p) ;(假设p的初值为a,即&a[0])
前者 *(p++) :① *p ②p++ ; 若输出 *(p++),得到a[0]的值;
后者 *(++p):①p++ ② *p; 若输出 *(++p),得到a[1]的值; - ++(*p):表示p所指向的元素值+1;假设p=a,则++(*p)相当于++a[0];
注意:是元素的值加1,而不是指针p的值加1;
看个小练习:
C程序设计--指针(对 “ 数组 ” 进行输入输出操作)相关推荐
- C语言文件与数组之间输入输出操作
C语言文件与数组之间输入输出操作 文件存到数组里面: #include<iostream> #include<fstream> #include<string> # ...
- C语言程序设计 | 指针(二):常量指针和指针常量、数组参数和指针参数、函数指针数组
指针的进阶(二)目录: 常量指针和指针常量 数组参数和指针参数 函数指针数组 常量指针和指针常量 在我们日常中,经常会用到一个关键字const const是一个C语言(ANSI C)的关键字,具有着举 ...
- C程序设计语言--第五章:指针与数组
为什么80%的码农都做不了架构师?>>> 指针是一种保存变量地址的变量. 5.1 指针与地址 通常的机器都有一系列连续编号或编址的存储单元,这些存储单元可以单个进行操纵,也可以 ...
- c语言程序设计实验周信东指针,C语言程序设计实验4数组周信东
1.实验 4 数 组姓名:XXX 学号: 实验日期:XXX1. 实验目的和要求(1)掌握一维数组与二维数组的定义.使用及初始化方法.(2)学习数组作为函数参数的用法.(3)掌握字符数组和字符串函数的使 ...
- 《C程序设计语言》笔记 (五) 指针与数组
5.1 指针与地址 指针是一种保存变量地址的变量ANSI C使用类型void*(指向void的指针)代替char *作为通用指针的类型一元运算符&可用于取一个对象的地址: p = &c ...
- C程序设计语言现代方法12:指针和数组
目录 1. 指针的算术运算 1.1 概述 1.2 C语言支持的算术运算类型 2. 指针的比较 3. 指针用于数组处理 4. 数组名与指针 4.1 用数组名作指针 4.2 数组取下标操作 4.3 惯用法 ...
- 程序设计基石与实践之C语言指针和数组基础
英文出处:Dennis Kubes: <Basics of Pointers and Arrays in C>. 关于C语言中指针和数组的争论就像是一场恶战.一方面,有些人觉得,所有人都 ...
- php指针取数组元素,php实现数组指针操作详解
本文主要介绍了php数组指针操作.具有很好的参考价值,下面跟着小编一起来看下吧 数组指针的操作: 移动数组指针的操作: Next() 向下 同时会获得当前元素的值. Prev() 向上同时会获得当前元 ...
- 哈工大c语言指针实验题,C语言程序设计_哈工大(2):指针与数组.pdf
圳 职 业 技 术 学 院Shenzhen Polytechnic 七单元(2):指针与数组 教学内容 指针与数组 教学目标 应知 数组的指针的意义,数组元素的指针的意义,数组名作函 数参数 应会 通 ...
- c语言程序设计 周信东 数组,c语言程序设计周信东数组
c语言程序设计周信东数组Tag内容描述: 1.第六章 数 组,数组的定义:是有序数据的集合. 数组的特点:数组中的每个元素都属于同一数据类型. 数组的访问:我们用一个统一的数组名和下标来唯一地确定数组 ...
最新文章
- jackson stax2-api
- T-SQL中的GROUP BY GROUPING SETS
- 一篇详文带你入门 Redis
- resultset需要关闭吗_旧电脑福音!关闭Windows这些没用的设置,电脑性能至少提升50%!...
- java自适应table_Java 设置Word中的表格自适应的3种方式
- 私人心情录小程序源码
- 基于python的贝叶斯分类算法_Python实现贝叶斯分类器
- STM32工作笔记0072---UCOSIII在STM32F103上的移植
- 文本视图(UITextView)占位符Swift
- 智能优化算法:野狗优化算法 - 附代码
- node-schedule的定时任务表达式
- 软考-中级-网络工程师-知识点个人总结(八)
- Windows下MySQL5.7压缩包安装教程
- 怎样从下载的MP4视频中将音乐提取出来?
- 数字图像处理笔记(九)基本的形态学算法
- Oracle dba_users视图
- button layui-btn 色调
- 15.(cesium之家)cesium暗色系地图样式地图(滤镜实现,反色滤镜)
- Python的io模块详解
- EBS R12多组织访问控制
热门文章
- 转载 《Python爬虫学习系列教程》学习笔记
- vmware workstation 12安装ubuntu kylin 16.04虚拟机
- 简单实现ToolStripMenuItem(菜单栏)的单选效果
- 学生的认知风格类型有哪些_《认知天性》读书笔记
- fckeditor for php 下载,FCKeditor 的配置和使用方法(for PHP)
- oracle mrp mps mds 的table关联,ORACLE中的计划-Forecast/MDS/MPS/MRP(转)
- java中不使用局部变量a的值_【转发】Java匿名类中使用的局部变量为何要加final...
- java ip范围_Java判断IP是否在指定范围
- 多叉树的深度优先遍历并输出叶子路径
- 跨域将.net 工程嵌入别的系统页面中发生的js、ajax的拒绝访问的错误