码迷,mamicode.com
首页 > 编程语言 > 详细

什么是指针?什么是数组?指针和数组的关系?

时间:2015-12-06 17:51:36      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:计算机   局限性   空间   

什么是指针?什么是数组?指针和数组的关系?


    形象地讲,我们可以把计算机的内存看作一条长街上的一排房屋,每个房间都可以容纳数据并通过一个房号来表识。而表示每个房间房号的值我们可以称为地址。或许这样的比喻有局限性,毕竟真实地计算机内存是以数以万计的bit位组成。

     ⑴初始化: 

        ①最简单的以 int *p 为例,初始化时内存里开辟了四个字节的空间。

                 ▇▇▇▇

        ②另一个声明 ,现在,我们有两个变量,下图中显示了后面那个未知内容的内存。

                     char ch = ‘a‘;

                     char cp = &a;

                ▇→▇▓←(?)

              ↗     ↖

            (cp)      (ch) 

       ⑵“*”的用法

            ① 定义指针变量是

            ② 对指针变量进行节引用是

 ★注意1:若要实现地址的移动,是p++,而不是*p++

 ★注意2:

              int *p = NULL;   //代表创建一个指针变量,并对它进行初始化。

              *p = NULL;      //将访问到的内容改为NULL。

 ★注意3:对于数组int a[4],&a与a的区别是什么呢?&a与a的内容一样,但&a+1增加了16个字节,而a+1增加了一个字节。原因是&a是整个数组的地址,而a是数组首元素的地址。


如下表格可以让我们深刻地理解指针与数组的区别

a[]={1,2,3,4}char name[]="abcdef"char *name="abcdef"
sizeof(a)=16sizeof(name[0])=1sizeof(&name)=4
sizeof(&a)=16sizeof(&name)=4sizeof(*name)=1
sizeof(a+0)=4
sizeof(*name)=1sizeof(&name+1)=4
=4sizeof(*a)=4sizeof(&name+1)=4sizeof(name)=4
sizeof(a+1)=4sizeof(name+1)=4sizeof(name+1)=4
sizeof(&a)=4sizeof(name)=7strlen(name)=6
sizeof(&a[0])=4strlen(&name)=6strlen(&name)=6
sizeof(&a[0]+1)=4strlen(&name+1)=12strlen(&name+1)=随机值



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

指针数组:用于存储指针的数组,即数组元素都是指针。

数组指针:指向数组的指针。


表达式类型
表示元素表示
int a[4]
整型数组含有4个元素的整型数组a[i]
int *a[4]数组指针a中元素为int型指针*a[i]或*(a[i])
int (*a)[4]数组指针指向数组a的指针(*a)[i]


▲int *:  一次访问四个字节.

▲char *: 一次访问一个字节.








什么是指针?什么是数组?指针和数组的关系?

标签:计算机   局限性   空间   

原文地址:http://10798301.blog.51cto.com/10788301/1720066

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!