[C++]指针和指向数组的指针[一维数组与指针]
形如:int型 数组 a[10]
1)&a[0] 地址常量;地址类型:int *型 ; 存储数组a的首地址
2) a 地址常量;地址类型:int *型 ; 存储数组a的首地址 即 a与 &a[0]等价
形如:指向一维数组的指针变量
如有定义: int a[10],*p;
①p = &a[6]; //表示将a[6]的地址赋给指针变量p
②p = a
p = &a[0] //均表示将数组a的地址(or a[0]的地址)赋给指针变量p
形如:指针可进行的运算
预先定义:指针变量p,数组a[10],正整数n;
1)指针 ± 数值 【实际值:p±n*size | 其中size指p的基类型所占用的存储字节数】
p - n : 指向a[i]前面的第n个元素;
※若定义:*p = a;
则:
*(a+i) 或者 a[i]
*(p+i) 或者 p[i] //四者意义:访问数组a中的第i个元素
本质与区别:
1.p与a数据类型均为int *型;
2.p是指针变量;a是指针常量(指向不可改变)
2)指针 -指针
前提:指向相同类型的指针变量可以相减
结果:两指针所指向的地址之间数据的个数(单位:数据类型,并非字节数)
Eg:
int *px,*py,n,a[5];
px = &a[1];
py = &a[4];
n = py - px; //结果:n = 3
n = px - py; //结果: n = -3
3)指针的比较运算(<,>,==,!=,<=,>=)
结果:1 or 0
Eg:px == py //两地址相同?0:1
px < py //px<py?0:1
px==NULL //px为空指针?0:1
即 真为0;假为1
--------------------------------------------------------------------------------------------------------
元素的地址: 元素的值:
a+i 数组名法 *(a+i) 数组名法
p+i 指针法 *(p+i) 指针法
&a[i] 下标法 a[i] 下标法
&p[i]下标法 p[i] 下标法
---------------------------------------------------------------------------------------------------------
典型例子1:分别求数组前十个元素和后十个元素之和
#include<iostream>
int fsum(int *array,int n) { //通用的求和函数
int i,s = 0;
for(i = 0;i<n;i++)
s += array[i]
return (s);
}
void main(void){
int a[15] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int shead ,stail;
shead = fsum(&a[0],10); //or fsum(a,10)
stail = fsum(&a[5],10) ; //or fsum(a+5,10)
---------------------------------------------------------------------------------------------------------
典型例子2:比较两字符串的大小:
int my_strcmp(char *s,char *p){
for(;*s==*p;s++;p++)
if(*s=='\0') reutrn (0); //如果都比较到最后一个字符了,那么二者相等
}
[C++]指针和指向数组的指针[一维数组与指针]的更多相关文章
- PHP开发小技巧③—实现多维数组转化为一维数组
在平常的项目开发中我们多会用到让多维数组转化为一维数组的情况,但是很多Programmer不会将其进行转化,也有些没有想到很好的算法然后经过乱起八糟的运算方式将其勉强转化好,但是所写的程序代码冗余非常 ...
- 二维数组转化为一维数组 contact 与apply 的结合
将多维数组(尤其是二维数组)转化为一维数组是业务开发中的常用逻辑,除了使用朴素的循环转换以外,我们还可以利用Javascript的语言特性实现更为简洁优雅的转换.本文将从朴素的循环转换开始,逐一介绍三 ...
- [Swift]多维数组的表示和存储:N维数组映射到一维数组(一一对应)!
数组:有序的元素序列. 若将有限个类型相同的变量的集合命名,那么这个名称为数组名.组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量.用于区分数组的各个元素的数字编号称为下标.数组 ...
- Python数组操作将一维数组变成二维数组
一.问题 我们在进行数组操作的时候会遇到将一个低维的数组变成一个高维的素数组 二.解决 第一种方法基本思路就是将低维数组进行等长的循环,在第一次为零的情况下,需要添加一个[]数组,原因是将它的基本框架 ...
- 题目要求:传入数组 内容为[['lisi','男','27'],['wangwu','男',18],['zhaoliu','男','30']],将此二维数组转化为一维数组,创建自定义函数完成
//自定义函数 function getOne($arr){ $str = ''; //定义空的字符串,用来接收值 foreach ($arr as $key=>$value){ //循环遍历数 ...
- 将二维数组转换成一维数组(基于reduce)
reduce:不改变原数组,返回一个新的数组.就是遍历数组元素,从头开始,依次往下,第一个参数是上一次的返回值,第二个参数是下一个数组元素,首次的时候第一个和第二个参数分别是 array[0], a ...
- php数组去重(一维数组)
<?php $arr = ['1', '1', 'PHP', 'PHP', 2, 3]; print_r($arr); echo "<br>"; print_r( ...
- php二维数组转成一维数组
$arr是需要转换的数组集合 array_reduce($arr, 'array_merge', array());
- python算法:嵌套数组转变成一维数组
比如,输入是:[2, 1, [3, [4, 5], 6], 7, [8]] 则,输出是:[2, 1, 3, 4, 5, 6, 7, 8] def list_flatten(l, a=None): a ...
- C++入门经典-例6.10-将多维数组转换成一维数组
1:代码如下: // 6.10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> usin ...
随机推荐
- delphi的一个公用函数库
delphi的一个公用函数库 {********************************************** *** Name: PublicFunc; *** Author: l ...
- BZOJ2863[SHOI2012]魔法树——树链剖分+线段树
题目描述 输入 输出 样例输入 4 0 1 1 2 2 3 4 Add 1 3 1 Query 0 Query 1 Query 2 样例输出 3 3 2 树链剖分模板题,路径修改子树查询,注意节点 ...
- day27 多继承 super 详细用法
# 没有使用super的时候的多继承,如果父类的名字变了.或者有什么更改,需要全部都一起改 class FooParent: def bar(self, message): print(message ...
- 树剖模板(洛谷P3384 【模板】树链剖分)(树链剖分,树状数组,树的dfn序)
洛谷题目传送门 仍然是一个板子. 不过蒟蒻去学了一下BIT维护区间修改区间求和,常数果真十分优秀 设数列为\(a_i\),差分数组\(d_ i=a_ i-a_ {i-1}\),前缀和\(s_i=\su ...
- Hdoj 1008.Elevator 题解
Problem Description The highest building in our city has only one elevator. A request list is made u ...
- python测试webservice接口
1.下载库:https://pypi.python.org/pypi/suds-jurko 2.解压后,进入到解压目录,安装库:python3 setup.py install 3.测试获取手机归属地 ...
- sqlite 日期型 字符串转为日期型
因为sqlite为弱引用,使用字段前将他强制转为日期型,用datetime.或者最原始的 strftime. SELECT distinct ID from testTable where datet ...
- c++纯虚函数在父类中调用的规避
构造和析构函数不允许调用纯虚函数,可以先调用虚函数,里面再调用纯虚函数实现. class Base{public: virtual void foo()=0; Base() { call_ ...
- Windows Boot Manager改成中文菜单
用管理员身份运行"命令提示符",依次执行以下命令 bcdedit /deletevalue {bootmgr} device bcdedit /deletevalue {bootm ...
- UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There Was One / POJ 3517 And Then There Was One / Aizu 1275 And Then There Was One (动态规划,思维题)
UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There W ...