指针 与数组 并没有什么关系,
 
指针就是指针,指针变量在32位系统下,永远占4个byte,其值为某一个内存的地址,指针可以指向任何地方,但是不是任何地方你都能通过这个指针变量访问到;
 
数组就是数组,其大小与元素的类型和个数有关,定义数组时必须指定其元素的类型和个数,数组可以存储任何类型的数据,但是不能存放函数;;
 
char *p = "abcdef"; // "abcdef" 放在静态区;
1) 以指针的形式:*(p+4) 这种形式先取出p存储的地址值,然后在加上4个字符的偏移量,得到新的地址,然后取出这个新的地址上的值:
2) 以下标的形式: p[4] .  编译器总是把以下标的形式的操作解析为以指针的形式的操作。p[4]这个操作会被解析成:先取出p存储的地址值,然后在加上4个字符的偏移量,得到新的地址,然后取出这个新的地址上的值:   
         两种方式在本质并没有什么区别,只是写法上的不同; 
 
 
a 与 &a 的区别;;

 
 
       int a[5] = { 1, 2, 3 ,4 ,5};
 
       int *ptr = (int *)(&a+1);             // 1 是 + sizeof(a)    ?20byte?
       printf("%d  %d\n" ,*(a+1) , *( ptr-1)); //  1 是sizeof(a[0]) ; //
 
     对指针进行加1操作,得到的是下一个元素的地址,而不是原有地址值直接加1,所以一个类型为T的指针的移动,以sizeiof(T)为移动单位
     &a+1:  去数组a的首地址,该地址的值加上sizeof(a)的值,即 &a+5*sizeof(int),也就是下一个数组的首地址,显然当前指针已经越过了数组的界限;;
     (int *)(&a+1): 将越出数组的地址,强制转化为 int* 类型,赋值给ptr;
     *(a+1):   a 与 &a 的值是一样的,但意思不一样,a是数组首元素的首地址,也就是a[0]的首地址, &a是数组的首地址。 
       a+1是数组下一元素的首地址,即a[1]的首地址,    所以输出2;;//   
       &a+1是下一个数组的首地址,   //
 

指针 与 数组 以及 a 与 &a的区别的更多相关文章

  1. C与指针(结构体指针,函数指针,数组指针,指针数组)定义与使用

    类型 普通指针 指针数组(非指针类型) 数组指针 结构体指针 函数指针 二重指针 定义方式 int *p; int *p[5]; int (*p)[5]; int a[3][5]; struct{.. ...

  2. 11-C语言指针&一维数组&字符串

    一.用指针遍历数组元素 1.最普通的遍历方式是用数组下标来遍历元素 1 // 定义一个int类型的数组 2 int a[4] = {1, 2, 3, 4}; 3 4 int i; 5 for (i = ...

  3. 指针与数组的区别 —— 《C语言深度剖析》读书心得

    原书很多已经写的很清楚很精炼了,我也无谓做无意义的搬运,仅把一些基础和一些我自己以前容易搞混的地方写一下. 1. 意义: 指针: 指针也是一种类型,长度为4字节,其存放的内容只能是一个地址(4字节). ...

  4. 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象, const 指针和指向 const 对象的指针, const 对象的引用

    [源码下载] 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象,  const 指针和指向 const 对象的指针, con ...

  5. c/c++ 函数指针 指针函数 数组的引用 指针数组 数组指针

    1.指针数组数组指针 引用数组 数组的引用 int *a[10] 指针数组 每一个元素都是一个指针 Int (*a)[10] 数组指针 P指向一个含有10个元素的数组 Int (&a)[10] ...

  6. 深入理解C语言中的指针与数组之指针篇

    转载于http://blog.csdn.net/hinyunsin/article/details/6662851     前言 其实很早就想要写一篇关于指针和数组的文章,毕竟可以认为这是C语言的根本 ...

  7. 转: 浅谈C/C++中的指针和数组(二)

    转自:http://www.cnblogs.com/dolphin0520/archive/2011/11/09/2242419.html 浅谈C/C++中的指针和数组(二) 前面已经讨论了指针和数组 ...

  8. 转:浅谈C/C++中的指针和数组(一)

    再次读的时候实践了一下代码,结果和原文不一致 error C2372: 'p' : redefinition; different types of indirection 不同类型的间接寻址 /// ...

  9. C语言指针与数组的定义与声明易错分析

    部分摘自<C语言深度解剖> 1.定义为数组,声明为指针 在文件1中定义: char a[100]; 在文件2中声明: extern char *a; //这样是错误的 这里的extern告 ...

随机推荐

  1. SSLv3 Poodle攻击漏洞检测工具

    漏洞编号:CVE-2014-3566 POC如下: import ssl,socket,sys SSL_VERSION={    'SSLv2':ssl.PROTOCOL_SSLv2,    'SSL ...

  2. IIS站点无法访问..点浏览IIS窗口直接关掉

    呃..其实这个问题很简单.. 大家可以先看这位大婶写的博文.. http://blog.csdn.net/chenguang79/article/details/7220232 如果网站一访问IIS就 ...

  3. python 默认全局变量

    python 内置默认全局变量print (vars()) __doc__ #py文件头部的注释 '''我是一个注释例子''' print (vars()) __file__ #当前文件路劲__pac ...

  4. Yii2-Redis使用小记 - Cache(转)

    前些天简单学习了下 Redis,现在准备在项目上使用它了.我们目前用的是 Yii2 框架,在官网搜索了下 Redis,就发现了yii2-redis这扩展. 安装后使用超简单,打开 common/con ...

  5. idea中的svn配置

    idea的使用之svn篇--有图超详细 http://ylq365.iteye.com/blog/1955291

  6. SQL Server2008 表旋转(pivot)技术

    参考资料: http://www.cnblogs.com/xiashengwang/p/3503554.html

  7. linuxMint下安装ftp工具--filezilla

    windows下ftp工具有好多,linux下推荐用filezilla 安装filezilla很简单,安装完后,使用方式和windows下面一样. 第一种方式: 直接去filezilla官网下载软件包 ...

  8. WCF--验证码实现...

    未开始待续... 未完待续...

  9. INSTALL_FAILED_INSUFFICIENT_STORAGE(转发)

    [2012-06-19 14:06:47 - Icontacts] Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE[2012-06-19 ...

  10. PHP基础之 继承(一)

    ========================================= *                 继承 extends *============================ ...