一、指针和数组

  #include <stdio.h>

  int main(int argc, char **argv)
{
int vector[] = {, , , , ,};
int *ptrVector = vector;
int size = sizeof(vector)/sizeof(int); printf("Used arr:\n");
for(int i = ; i < size; i++){
printf("vector[%d]: %d\n", i, vector[i]);
}
printf("\n"); printf("Used ptr:\n");
for(int i = ; i < size; i++){
printf("vector[%d]: %d\n", i, *(ptrVector + i));
}
printf("\n"); printf("Special used arr:\n");
for(int i = ; i < size; i++){
printf("vector[%d]: %d\n", i, i[vector]);
}
printf("\n"); printf("Special used ptr:\n");
for(int i = ; i < size; i++){
printf("vector[%d]: %d\n", i, *(i + ptrVector));
}
printf("\n"); printf("The vector size: %d\n", size); return ;
}

    1、代码说明:

      1)、9-13行的代码展示了一般的访问数组的方式

      2)、15-19行的代码展示了使用指针访问数组的方式

      3)、21-25行的代码展示了使用交换指针访问数组的方式

      4)、27-31行的代码展示了使用交换数组和下标的访问数组方式

      5)、若存在第5和第6行代码,则存在vector[i]  <=> *(ptrVector + i),因此必然存在 i[vector]  <=> *(i + ptrVector),因此存在21到31行的代码

    2、特殊说明:

      1)、数组名称本身可以表示数组的地址,可以使用ptrVector = vector语句实现指针赋值;

      2)、也可以使用&实现获取地址,使用ptrVector = &vector语句实现指针变量的赋值

      3)、可以使用*(ptrVector + i)访问索引为i的数组元素

      4)、可以使用*(vector + i)访问索引为i的数组元素

      5)、使用数组名运算时,需要主要添加的是整个数组的大小

      6)、vector[i] 的机器码是从vector地址开始,移动i个位置,取出对应的内容

      7)、*(vector + i)的机器码是从vector地址开始,在地址上增加i,取出对应的内容

24深入理解C指针之---指针和数组的更多相关文章

  1. 00深入理解C指针之--- 指针之外

    该系列文章源于<深入理解C指针>的阅读与理解,由于本人的见识和知识的欠缺可能有误,还望大家批评指教. C语言从诞生之初就非常善于和硬件打交道,经过这么多年的发展之后,其灵活性和超强的特征是 ...

  2. 10深入理解C指针之---指针运算和比较

    该系列文章源于<深入理解C指针>的阅读与理解,由于本人的见识和知识的欠缺可能有误,还望大家批评指教. 指针运算有很多种,主要有指针的声明*.指针的解引*.指针指向(*).或->.指针 ...

  3. 02深入理解C指针之---指针类型和值

    该系列文章源于<深入理解C指针>的阅读与理解,由于本人的见识和知识的欠缺可能有误,还望大家批评指教. 1.指针的类型: 可以在声明指针时,指定指针的类型,例如: (1)void *x  声 ...

  4. 06深入理解C指针之---指针操作和比较

    该系列文章源于<深入理解C指针>的阅读与理解,由于本人的见识和知识的欠缺可能有误,还望大家批评指教. 指针作为一种特殊类型的变量,必须遵守C语言中变量先声明后使用的原则.本节内容中指针的操 ...

  5. 理解C语言中指针的声明以及复杂声明的语法

    昨天刚把<C程序设计语言>中"指针与数组"章节读完,最终把心中的疑惑彻底解开了.如今记录下我对指针声明的理解.顺便说下怎样在C语言中创建复杂声明以及读懂复杂声明. 本文 ...

  6. 这样子来理解C语言中指针的指针

    友情提示:阅读本文前,请先参考我的之前的文章<从四个属性的角度来理解C语言的指针也许会更好理解>,若已阅读,请继续往下看. 我从4个属性的角度来总结了C语言中的指针概念.对于C语言的一个指 ...

  7. 从四个属性的角度来理解C语言的指针也许会更好理解

    文章会在文末更新! 关于指针是什么,很多教材已经作出了定义,大多数都会定义为"存放变量内存地址的变量".从这句话中我觉得除了让我知道这个定义有11个字以外,其他就没什么用了.我个人 ...

  8. 理解git 中的HEAD指针&branch指针

    理解git 中的HEAD指针&branch指针 Yooye关注 2019.02.28 10:44:32字数 492阅读 668 HEAD指针 使用git checkout 来移动HEAD指针, ...

  9. 深入理解C语言-函数指针

    函数指针在C++中有着重要的应用,函数的函数名其本质就是代表一个地址,这个地址叫做函数入口,得到这个地址就可以对这个函数进行各种操作. 函数类型基础 函数三要素: 名称.参数.返回值 C语言中的函数有 ...

  10. 深入理解C语言-二级指针三种内存模型

    二级指针相对于一级指针,显得更难,难在于指针和数组的混合,定义不同类型的二级指针,在使用的时候有着很大的区别 第一种内存模型char *arr[] 若有如下定义 char *arr[] = {&quo ...

随机推荐

  1. java开发微信公众号----开发者基本配置的

    首先附上微信公众平台开发技术文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1472017492_58YV5 本文主要描 ...

  2. LeetCode935

    问题:935. 骑士拨号器 国际象棋中的骑士可以按下图所示进行移动:  .            这一次,我们将 “骑士” 放在电话拨号盘的任意数字键(如上图所示)上,接下来,骑士将会跳 N-1 步. ...

  3. STA basic

  4. 【java】类成员的访问限制关系

  5. biological clock--class

    '''this application aimed to cauculate people's biological block about emotional(28), energy(23),int ...

  6. 用\r做出进度条

    在做ftp作业的时候,需要做一个上传和下载的进度条,做的时候发现用\r很容易就能做出来 def show_progress(self, has, total): rate = float(has) / ...

  7. poj-3278 catch that cow(搜索题)

    题目描述: Farmer John has been informed of the location of a fugitive cow and wants to catch her immedia ...

  8. Linux实现内容分发的主备模式的智能DNS

    BIND实现智能DNS的原理是通过view的方式,首先判断客户请求的来源,然后返回不同的IP 规划:为za.com域进行智能解析 分2个网段,192.168.1.0/24网段的请求解析到192.168 ...

  9. 自动设置IP地址bat脚本

    自动获取IP及DNS: netsh interface ip set address name="本地连接" source=dhcpnetsh interface ip set d ...

  10. JDK1.8 HashMap$TreeNode.balanceInsertion 红黑树平衡插入

    红黑树介绍 1.节点是红色或黑色. 2.根节点是黑色. 3.每个叶子节点都是黑色的空节点(NIL节点). 4 每个红色节点的两个子节点都是黑色.(从每个叶子到根的所有路径上不能有两个连续的红色节点) ...