指针增量和数组的关系,指针偏移的补充,(重要面试),gdp调试,将数组中的n个元素逆序存放
1、指针增量和数组的关系
//加1 代表了地址偏移了一个类型的字节数(整形数偏移四个字节,char形数偏移了一个字节)
再来下标法:
2、指针偏移的补充
也可以换一种写法(第12行)
但是呢同样的代码再来一次就会造成数组的越界
如何改正呢?重新让指针回到数组的首元素
3、见怪不怪:指针当成数组名,下标法访问
完全可以通过下标法,把3访问出来
//可以把它当成一个数组名来用
可以通过下标法,把数组访问出来
4、见怪不怪:数组名拿来加
也可以用arr
5、数组名和指针的区别
a++可行否?
如果把22行做一下改变
//第五行是指针常量,第六行是指针变量
(第22行指针常量,编译不过)
指针常量不允许++;
指针变量可以++;不过+完之后要往回走
这就不行了
因为涉及到:常量指针 和指针变量
p 是一个指针变量,变量什么意思?它是一个保存地址的变量,它保存的地址是可改的
arr 是一个常变量,1,2,3在内存空间,地址定了就是定了,数组名代表那段空间的开头位置,不能把数组名拿来加,加到后面的位置
sizeof可行否?
//根据9,11,12行知道,只要是个指针就是八个字节
6、函数封装数组初始化,遍历
首先先试试gdb
错误在第八行应该改成scanf("%d",&arr[i])
不过呢 我们可以用gdp 调试
调试方式:在编译的时候加上一个-g选项,加上-g选项可以让编译出来的程序可调式
gdb就是用来调试程序的
然后按一下r 进入程序的带运行状态
就可以知道错在哪了。
(Segmentation fault,经常被缩写成segfault,又译为储存器段错误,也称访问权限冲突)
退出的话 ,按一下q
然后再按一下y
//实际参数,数组的首地址 :名,首个元素的地址
为了好看可以再改一下
(注意第8行和第17行的区别)
可是这里为什么不需要像之前一样初始化呢?(下面第17行)
遍历一个数组,再后面接着遍历这个数组的时候,需要把p 指向数组的首元素
因为他是两个函数,内存空间不同,虽然都叫parr
每次函数调用,都在对形参赋初值
运行结果
也可以改成
7、将数组中的n个元素逆序存放
然后再做些改动,修改的更指针一点
指针增量和数组的关系,指针偏移的补充,(重要面试),gdp调试,将数组中的n个元素逆序存放相关推荐
- 最优解法——7-3 将数组中的数逆序存放 (20 分)——10行代码AC
励志用尽量少的代码做高效的表达. 题目描述 本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素. 输入格式: 输入在第一行中给出一个正整数n(1≤n≤1 ...
- 输入一个数组,逆序存放在另一个数组并输出
<程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p73 4.1.2 上级实训内容 [实训内容1]在1个数组中输入10个数,逆序存放在另一个数组中. #i ...
- PTA-7-1 将数组中的数逆序存放 (20分)(C语言)
本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素. 输入格式: 输入在第一行中给出一个正整数n(1≤n≤10).第二行输入n个整数,用空格分开. 输出 ...
- PTA 【java】7-2 将数组中的数逆序存放 (20 分)
本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素. 输入格式: 输入在第一行中给出一个正整数n(1≤n≤10).第二行输入n个整数,用空格分开. 输出 ...
- PTA 数组 7-2 逆序存放数组中的数据,并输出指定元素
本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按要求输出指定的数组元素. 输入格式: 在第一行中给出一个正整数n(1≤n≤10).第二行输入n个整数,用空格分开.第三行输 ...
- c语言指针字符串逆序存放,C语言指针实现字符串的反转
题目要求: 编写程序:从键盘任意输入一个字符串,输出该字符串. 然后,将该字符串逆序存放后再输出,要求用字符指针完成. 代码: //解法一 #include #include int main() { ...
- C语言将数组中的值逆序存放
C语言将数组中的值逆序存放 #include<stdio.h> #define N 5 int main(){int a[N], i, temp;printf("请输入一个数组: ...
- C语言实现对一维数组所有元素排序,然后将m1到m2之间的元素逆序
C语言实现一维数组排序和逆序 本例用的是选择排序,先找出数组中最小的元素换到数组开头,再找出剩余未排序元素中的最小元素换到前面找出的最小元素之后,以此类推. #include <stdio.h& ...
- 一维数组的使用:逆序输出数据/:任意输入5个数据,存放于数组,编程实现将这5个数据逆序存放并输出
任意输入5个数据,存放于一维数组,编程实现将这5个数据逆序存放并输出 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int ma ...
最新文章
- AD7606数据采集板使用ASCII码传递BINARY数据
- java和c++的区别大吗_安徽成人高考和自考区别大吗?为什么推荐选成人高考?
- 【AndroidSupport】LinearLayoutCompat
- 前端入门之——jquery day9
- EDITOR-CALL语句的使用:修改abap内表的内容(代码摘抄)
- Jenkins pipeline JENKINS_NODE_COOKIE踩坑记录
- 基于leveldb,levigo做二次开发
- php zend 多个站错误,php – 如何显示Zend框架抛出的异常错误
- 坐标不显示_Simpack不显示坐标轴方向的解决方法
- project facets中没有dynamic_C++强制类型转换操作符 dynamic_cast
- 使用pymongo连接mongodb时报错:pymongo.errors.OperationFailure: not authorized
- 活在当下本意是抑制欲望的无度
- 折腾BIOS,改开机logo图标
- HP LaserJet P1108驱动安装
- 【vue项目实战】Vue工程化项目--猫眼电影移动端(三)
- java代码实现龙卷风_程序设计-理解java继承-遁地龙卷风
- linux系统防篡改,网站防篡改脚本
- SLD各地物配置文件
- 基于java博网即时通讯软件的设计与实现
- typeScript的定义类型:不能将类型“Timeout”分配给类型“number”;