指针学习总结(数组指针,指针数组)

来源:互联网 发布:window python开发工具 编辑:程序博客网 时间:2024/06/05 19:22

      指针是C语言的精髓,它可以直接操作内存地址,学会灵活运用指针将会非常方便。很多人碰到指针会犯迷糊,搞不懂指针到底是什么。

    数据在内存中是怎样存储读取呢?比如定义一个变量,程序在编译时系统会给这个变量分配 内存单元。然后根据类型给它分配相应的字节,内存区每块字节都有相应的编号,这种编号就是内存地址。指针就是用来存放内存地址的。要想存放内存地址我们要先得到地址,这时就用到  “&”这个符号

<pre name="code" class="cpp">#include <stdio.h>void main(){  char a,b;  char *p;  p=&a;  b=*p;  printf("%p",p);  printf("%c",b);}


这时打印出来的p,b是多少呢?这里的&可不是按位与,这里是取地址符。“ * ”是间接取地址。*p 就是将p的地址还原回去,找到这个地址所指向的内容。指针变量在32 位系统下,永远占4 个byte,其值为某一个内存的地址。指针可以指向任何地方,但是不是任何地方你都能通过这个指针变量访问到。

指针数组

          首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称。

数组指针

         首先它是一个指针,它指向一个数组。在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道。它是“指向数组的指针”的简称。

char *p1[10];char (*p2)[10];

这两个分别是什么意思呢?

       “[ ]”的优先级比“ * ”要高,所以 p1[10] 是一个整体,也就是一个数组。char *修饰的就是数组的内容。通常也可以这样写比较好理解:char*   p1[10];   。它就是10个指向int类型数据的指针,即指针数组。

什么时候用到这个呢?怎么用呢?

char a,b,c,d;char *p,*q,*v,*w;p=&a;q=&b;v=&c;w=&d;
如果程序中多次用到指针,这样定义是不是需要定义很多指针。我们直接用指针数组。

char a,b,c,d;char *p[4];p[0]=a;p[1]=b;p[2]=c;p[3]=d;
这样调用的时候也方便。

下面来说

char (*p2)[10];
在这里先算*p2,构成一个变量名为p2的指针,它指向一个为char型元素为10的数组。



0 0
原创粉丝点击