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

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


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

     ⑴初始化: 指针

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

                 ▇▇▇▇it

        ②另外一个声明 ,如今,咱们有两个变量,下图中显示了后面那个未知内容的内存。table

                     char ch = 'a';class

                     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)=16 sizeof(name[0])=1 sizeof(&name)=4
sizeof(&a)=16 sizeof(&name)=4 sizeof(*name)=1
sizeof(a+0)=4
sizeof(*name)=1 sizeof(&name+1)=4
=4sizeof(*a)=4 sizeof(&name+1)=4 sizeof(name)=4
sizeof(a+1)=4 sizeof(name+1)=4 sizeof(name+1)=4
sizeof(&a)=4 sizeof(name)=7 strlen(name)=6
sizeof(&a[0])=4 strlen(&name)=6 strlen(&name)=6
sizeof(&a[0]+1)=4 strlen(&name+1)=12 strlen(&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 *: 一次访问一个字节.

相关文章
相关标签/搜索