ap是一个指针名array是一个数组名
1. ap[-1]
负值的下标,下标引用就是间接访问表达式,只要把它转换为那种形式并对它进行求值。ap如果指向第3个元素(就是那个下标值 为2的元素),所以使用偏移量-1就是得到它的前一个元素,也就是array[1]。
2. ap[6] 反这个下标表达式转换为与其对应的间接访问表达式形式,其实就是*(ap+6)。
3. 2[array] 表示*(2+(array))

下面是测试代码,帮助理解

#include <iostream>using namespace std;int main(){int array[10];for (int i = 0; i < 10; ++i){array[i] = i;}cout << "array: ";for (int j = 0; j < 10; ++j){cout << array[j] << " ";}cout << endl;int *ap = &array[3];cout << "*ap: " << *ap << endl;cout << "ap[-1]: " << ap[-1] << endl;cout << "ap[6]: " << ap[6] << endl;cout << "*ap: " << *ap << endl;cout << "2[array]: " << 2[array] << endl;return 0;
}

运行结果:

《C和指针》——数组的奇怪形式相关推荐

  1. c语言数组如何把一串数字存入数组_C语言 指针 (三)指针数组与数组指针

    对像我一样的初学者而言,指针数组.数组指针,听名字就很容易傻傻分不清.对于数组与指针的不同,笔者已经在上一篇文章里面已经做出了相对简单的解释.那么,"指针数组"和"数组指 ...

  2. 指针数组与数组指针的区别

    指针数组 在C语言和C++语言中,数组元素全为指针的数组称为指针数组. 一维指针数组的定义形式为:"类型名 *数组标识符[数组长度]". 例如,一个一维指针数组的定义:int *p ...

  3. 【学习笔记】数组的地址分配及指针数组的使用

    对于一维数组a[i](a[i]类型不为char),a表示数组的首地址,即a=&a[0]. int a[10]; cout<<a<<endl; cout<<& ...

  4. c语言char数组和short数组的区别,详解C语言中Char型指针数组与字符数组的区别

    详解C语言中Char型指针数组与字符数组的区别 详解C语言中Char型指针数组与字符数组的区别 1.char 类型的指针数组:每个元素都指向一个字符串,指向可以改变 char *name[3] = { ...

  5. C语言数组指针和指针数组实例演示

    一.数组指针 1.简介 数组指针就是指向数组的指针. 定义方式:int (*p)[len] = NULL; 示例: #include <stdio.h> int main() {int a ...

  6. 指针数组和数组指针的区别

    对数组的定义:数组是一个固定长度的存储相同数据类型的数据结构,数组中的元素被存储在一段连续的内存空间中. 格式: 一维数组:数据类型 数组名[数字(包含了几个元素)]={元素,元素,元素,元素.... ...

  7. 使用指针数组+申请动态内存实现英文单词排序

    在实现这一目标前我们首先得知道什么是指针数组和动态内存 1.指针数组 在C语言和C++等语言中,数组元素全为指针变量的数组称为指针数组,指针数组中的元素都必须具有相同的存储类型.指向相同数据类型的指针 ...

  8. C++ 笔记(14)— 指针(指针声明、取地址、取值、new/delete、NULL指针、指针运算、指针数组、数组指针、指针传递给函数、从函数返回指针)

    1. 声明指针 指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址.就像其他变量或常量一样,您必须在使用指 针存储其他变量地址之前,对其进行声明. 指针变量声明的一般形式为: type * ...

  9. 指针 数组指针 指针数组 函数指针等说明。

    指针的概念 原文地址:http://www.cnblogs.com/ggjucheng/archive/2011/12/13/2286391.html 指针是一个特殊的变量,它里面存储的数值被解释成为 ...

最新文章

  1. 冬奥会夺金的背后杀手锏,竟是位 AI 虚拟教练
  2. 【重磅】旷视提出MegDetV2:目标检测/实例分割新系统
  3. 你需要知道的requestAnimationFrame
  4. 集合框架—HashMap
  5. 什么叫Web前端?web前端HTML5学习方法分享
  6. Error:Internal error: org.gradle.tooling.BuildException: Could not run build action using Gradle dis
  7. 字符串不替代_【数据挖掘】MySQL中的字符串数据类型
  8. Servlet 编写过滤器
  9. t–sql pl–sql_SQL View –完整的介绍和演练
  10. c语言学生成绩管理系统讲解,C语言学生成绩管理系统(含源代码)精编.doc
  11. 最新emoji表情代码大全_在 Markdown 中使用表情符号
  12. 通信专业顶刊_通信类期刊排名_2016通信期刊排名_2016通信前沿新技术
  13. 异常与调试之SEH、UEH、VEH、VCH以及SEH原理
  14. ubuntu18.04前置面板声音输出方法
  15. set_drain_time和time类型数据介绍
  16. error An unexpected error occurred: “https://registry.npmjs.org/react: ETIMEDOUT“.
  17. java实用教程第五版电子书,爱了爱了
  18. 以太网以及车载以太网概述
  19. Realtek RTL8762C/Realtek RTL8762D学习记录
  20. 自己动手画CPU《计算机组织与结构实验》之计算机数据表示 第2关:汉字机内码获取实验 超详细教学

热门文章

  1. 协同过滤算法_基于Mahout的协同过滤推荐算法
  2. 计算机公式与函数乘法,excel常用函数乘法公式的使用方法
  3. seafile安装教程 Linux,CentOS7安装seafile开源版
  4. MSP, CMP傻傻分不清楚?一文读懂云管理的春天
  5. ros melodic 版本sudo rosdep init和rosdep upgrade失败的解决办法
  6. Arraylist理解(2)扩容
  7. gulimall(谷粒商城) 是一个综合性的B2C平台,包括前台商城系统以及后台管理系统
  8. php闭包查询作用,ThinkPHP5 闭包查询问题的探讨
  9. 烟台大学计算机与控制工程学院研究生导师,烟台大学计算机与控制工程学院欢迎大家...
  10. Laynews内核仿阿怪资源娱乐网源码