[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 ...
随机推荐
- Idea for Mac 过期 IntelliJ IDEA 2017 完美注册方法(附idea for Mac破解方法)
Idea 不能使用了: 开始破解: (1)首先下载 jar包: https://download.csdn.net/download/engerla/10573069 放到位置: /Applicati ...
- caffe运行错误: im2col.cu:61] Check failed: error == cudaSuccess (8 vs. 0) invalid device function
错误: im2col.cu:61] Check failed: error == cudaSuccess (8 vs. 0) invalid device function 原因:由于Makefil ...
- BZOJ4001[TJOI2015]概率论——卡特兰数
题目描述 输入 输入一个正整数N,代表有根树的结点数 输出 输出这棵树期望的叶子节点数.要求误差小于1e-9 样例输入 1 样例输出 1.000000000 提示 1<=N<=10^9 设 ...
- python3.5opencv3图像文字标注
import cv2 cv2.namedWindow("mark", cv2.WINDOW_AUTOSIZE) image = cv2.imread("../images ...
- 洛谷P4768 [NOI2018]归程(可持久化并查集,最短路)
闲话 一个蒟蒻,在网络同步赛上进行了这样的表演-- T2组合计数不会,T3字符串数据结构不会,于是爆肝T1 一开始以为整个地图都有车,然后写了2h+的树套树,终于发现样例过不去 然后写可持久化并查集D ...
- eclipse中用maven创建web项目
上一节中完成了本地的maven环境搭建,在eclipse中怎么创建一个maven项目呢 一.eclipse中配置maven环境 eclipse版本4.3 1.打开菜单Help->Eclipse ...
- THUWC2019 摸鱼记
Day1 菜狗选手无人权,衣服没有海星,狗牌手写全糊,餐票不发刷卡,住宿自理宾馆. 人菜没办法. 感受到了自己智商低 不想写了 想原地退役 不知道还要不要走下去
- 洛谷 P2746 [USACO5.3]校园网Network of Schools 解题报告
P2746 [USACO5.3]校园网Network of Schools 题目描述 一些学校连入一个电脑网络.那些学校已订立了协议:每个学校都会给其它的一些学校分发软件(称作"接受学校&q ...
- suoi63 树与路径 (倍增lca)
发现对于某一个点它向上发的一条边,它被经过的次数就是这个点子树数量*不是它子树的数量 那就维护一个前缀和,然后每次拿两个端点和它们的lca的值加一加减一减,再乘上加上的值,就是这次修改后答案的增量 ( ...
- Azure KeyVault设置策略和自动化添加secrets键值对
一. 关于Azure Key Vault Azure 密钥保管库可帮助保护云应用程序和服务使用的加密密钥和机密. 借助 Key Vault,可使用密钥来加密密钥和机密(例如身份验证密钥.存储帐户密钥. ...