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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 569015640 中级黑马   /  2015-10-9 23:46  /  715 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#include<stdio.h>
/*
1.指针数组:表示一个数组,用来存指针的数组就叫指针数组,数组里面的元素都是指针;
2.定义方式为:int *p[3];表示定义一个可以存三个int指针的数组
赋值:int a1=1,a2=2,a3=3;  int *p[3]={&a1,&a2,&a3};
取值:int *a=[0];
*/
/*
1.数组的指针:表示一个指针,而这个指针类型是数组
2.定义方式:int (*p)[3];表示这是一个含有三个元素的int数组的指针.
赋值:int arr[3]={1,2,3}; int(*p)[3]=&arr;
*/
/*
1.数组元素的指针:
    表示一个指针,而这个指针存的是数组一个元素的地址.
    int arr[1]={1};int *p=&arr[0];
*/
/*
特点:
1.数组名表示第一个元素的地址,&数组名表示整个数组的地址.二者值相同,但意义不同
2.指针可以运算.但权限仅限与加减运算,运算的实质就是地址运算.即地址的移动(*p=*p+1;不对)
3.地址+1向高位移动,而-1向低位移动.不同指针类型移动一位的字节数不同
4.实际移动的字节数看指针类型,类型占多少个字节,一位就移动多少个字节
*/
int main(){
//    int arr[]={1,3,5};
//    int *p=arr;//相当于int *p=&arr[0];
//    int a=*p;
//    a=*(p+1);//此处需要注意左右数据类型的严格对照;
//    printf("*(p+1)=%d\n",a);
//    a=*(p-1);
//    printf("*(p-1)=%d\n",a);
//    return 0;
    //定义一个指针数组
    int *P[3];
    int a1=1,a2=2,a3=3;
    //创建三个指针(int型)
    int *p1=&a1;
    int *p2=&a2;
    int *p3=&a3;
    //给数组赋值
    p[0]=p1;
    p[1]=p2;
    p[2]=p3;
    //取值
    int *ptemp=p[0];
    printf("p1=%p,ptemp=%p\n",p1,ptemp);
    return 0;
}

QQ图片20150927202316.png (3.65 KB, 下载次数: 14)

QQ图片20150927202316.png

0 个回复

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