A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 ios小白成长记 于 2015-11-29 14:04 编辑

/*如何判别指针数组与数组指针:  有括号的是数组指针   如  int (*p)[3];  无括号的是指针数组   如  int *p[3]   */  
指针数组的实质还是一个数组.
指针数组:  指针数组是用一个数组来表示多个指针,所以数组里面的元素都是代表地址的指针.  //  如 int *p里面的p就是一个指针,他的类型是int *类型,里面将要存储的是一个地址,而*p则表示这个地址里面的值.下面有图可以自己理解.如图: 每次定义一个数据,都会开辟一块存储空间,每个空间都有一个地址,把地址赋值给指针,就可以通过地址来寻找到这个地址里面所存储的数据.

                                                         



int a=3,b=4,c=5;
int *p1=&a;        
int  *p2=&b;
int  *p3=&c;
int *arr[3]={p1,p2,p3};   //表示3个元素的数组,里面存储的都是指针,也就是存储了3个地址.
print("%p\n",arr[0]);//打印出每个指针元数里面地址
print("%p\n",arr[1]);
print("%p\n",arr[2]);
print("%d\n",*arr[0]);//打印出每个指针元数里面地址所指向的那片空间的数据   此处带上*表示得到的是每个地址里面的数据
print("%d\n",*arr[1]);
print("%d\n",*arr[2]);

/*
指针注意点,没有初始化就不能使用;
  情况1:         如  int *p;
                     *p=5;
                      printf("%d",*p);   //错误        因为指针没有得到一个地址,所以未被初始化,不知道自己所指向的空间是那一块.所以不能够打印
情况2:       int a=5;     int *p=&a;   //正确
               int a=5 ;    int *p;    p=&a; //  正确
              int a=5;   int *p;   *p=&a  //错误   ,给p赋值时,要将(int *)看做一个整体,只有取p所指向那片空间的值时才用 *p.
*/





0 个回复

您需要登录后才可以回帖 登录 | 加入黑马