码迷,mamicode.com
首页 > 编程语言 > 详细

C语言多级指针

时间:2015-12-03 02:06:59      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:

指针就是地址,指针变量是保存指针(地址)的变量,整形变量就是保存整形的变量,我的理解就是保存地址的变量叫指针,地址就叫地址:

1         int a = 0;
2         
3         int *p = &a;
4         
5         printf("%d\n",*p);
6         printf("%p\n",p);
7         printf("%p\n",&p);
1 //打印结果
2 0
3 0x7fff5fbff84c
4 0x7fff5fbff840
5 0x7fff5fbff850
6 Program ended with exit code: 0

&取地址符,可以获得右边变量的地址;

很多初学者都会问这里int *p = &a,不是把a的地址赋值给了*p吗,为什么*p 打印的不是a的地址,而是a的值

我的理解是 int *p 只是一种声明指针的语法,实际上p才是我们定义的指针变量

 

技术分享

二级指针就是<存放指针的地址的指针>,WTF!我当时就懵了

先上代码和图:

        int a = 10086;
        
        int *p = &a;
        
        int **p1 = &p;

        printf("%d\n",a);
        printf("%p\n",p);
        printf("%p\n",&p);
        
        printf("\n我是二级指针:\n");
        
        printf("%d\n",**p1);
        printf("%p\n",*p1);
        printf("%p\n",p1);
     printf("别看哥是二级指针,哥也是有地址的人>>%p\n",&p1);
//打印结果
10086
0x7fff5fbff84c
0x7fff5fbff840

我是二级指针:
10086
0x7fff5fbff84c
0x7fff5fbff840
0x7fff5fbff838 //看到没
Program ended with exit code: 0

为什么*p1会是a的地址,**p1是a的值,先看图你会发现一定规律的

技术分享

搞清楚*号有什么用10086级指针都不怕

int **p1 = &p;可以把 int ** 理解成类型告诉编译器我要定义几级指针

        int **p1 = &p;
        
        typedef int** twoP;

        twoP p2  = &p;    //英语初中毕业,再问自杀

 

...三级指针可以存放二级指针的地址,二级指针可以存放一级指针的地址,一级指针可以存放一个值类型的地址

假如用一个一级指针去保存一级指针的地址,编译器会警告并提示用二级指针啊

  • 技术分享

 

C语言多级指针

标签:

原文地址:http://www.cnblogs.com/dengchen/p/5014861.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!