指针与数组

来源:互联网 发布:mac os ps 破解版 编辑:程序博客网 时间:2024/06/14 12:16

C语言中经常会用到这两个东西,指针,数组。下面我从值,内存分配,访问形式这几个方面来分析一下这两个区别。


值及内存分配。


指针时一个变量,在32位系统下,它的大小永远是4个byte,指针的值是地址,它通过保存指针所指向对象的首地址来访问这个对象。

例如:

 

#include<stdio.h>int main() {   int a=1;   int *p=&a;   printf("%d",*p);   return 0; }


这里有三个概念:*p,p,&p;(一定要分清楚这三个概念,不然在以后学习中会遇到许多困难)

   *p------->指针所向对象的值;(a)

    p-------->指针所指向对象的首地址;(&a)

  &p--------->指针本身的地址;(&p)


数组,你可以把它想象成学校澡堂的储物柜,每一个柜子都有自己的编号,你可通过编号来找到任何一个柜子。数组下标的道理与这个相同,不过数组下标是从0开始。


数组的大小与它所存储元素的类型,个数有关。定义数组时必须指明它的元素类型和元素个数。定义好之后,它的大小是不能修改的。


数组可以存储任何类型的数组,不包括函数。


#include<stdio.h>int main() {   int a[3]={1,2,3};   int a[]="abcd";   return 0; }



这里要记住,数组名就是数组首地址,请自行查阅 &a与a的区别。


访问形式


下面这部分内容可能比较难懂,指针可以以下标的形式访问指针的元素,,数组也可以用指针的形式访问数组的元素。


读下面函数:

                 

                          
                        #include<stdio.h>                            int main()                              {                                      char *p="abcdef";                                      char arr[]="abcdef";                                      printf("%c\n",*(p+1));                                      printf("%c\n",p[1]);                                      printf("%c\n",arr[1]);                                      printf("%c\n",*(arr+1));                                      return 0;                             }


 

当你执行这个程序的时候,会发现运行框里会输出4个b。




                                                     


                                             



1 0
原创粉丝点击