码迷,mamicode.com
首页 > 其他好文 > 详细

C中的指针的指针

时间:2014-07-21 10:11:50      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:http   os   文件   2014   io   re   

    指针存储的是内存地址,那么当代码执行

int *iptr;
int a;
iptr = &a;

    它表示iptr指向了a所在的内存地址。那么若执行

*iptr = 10;
printf("a = %d\n",a);

    那么a的值为多少呢?

    可以简单地写一个程序 cpoint1.c

#include<stdio.h>
int main()
{
	int a;
	int *iptr;
	iptr = &a;
	*iptr = 10;
	printf("a = %d\n",a);
}

    在终端上利用gcc编译

#gcc cpoint1.c

    执行后生成a.out执行文件

./a.out

    会看到打印的是 a = 10

    这里可理解为指针iptr指向了a所在的内存地址,那么当执行 

*iptr = 10;

    时,实际就是将10存到a所在的内存地址中。

    现在了解了指针的基本概念,那么什么是指针的指针呢?

    首先,假设小明、小华、小新他们三个是朋友,但是小明只有小华的电话号码,而小华只有小新的电话号码。那么如果小明想找小新的话,就得先联系小华,通过小华联系小新。

bubuko.com,布布扣

    如果将小华和小新都当做一个内存的地址,那么小明指向小华,可理解为一级指针,小华再指向小新,这样就成了指针的指针。

int *iptr;
int a;
int **jptr;

    上面已经知道了

iptr = &a;

    指的是将a所在的内存地址赋值给iptr

    那么jptr这个指针又该如何赋值。刚才小明小华小新的例子,可以这样解剖

int **小明;
int *小华;
int 小新;

    首先小明要得到小新的地址,那么要通过小华。所以有

小华 = &小新;

    这样小华就指向了小新,得到小新的地址,然后再将小华的地址转给小明,这样就可以完成小明得到小新的地址

小明 = &小华;

    接下来看下面的程序 cpoint2.c

#include<stdio.h>
int main()
{
	int a;
	int *iptr;
	int **jptr;
	iptr = &a;
	jptr = &iptr;
	a = 10;
	printf("jptr = %d\n",**jptr);
}
#gcc cpoint2.c

    编译执行的结果为:

jptr = 10

    看明白了吗?

C中的指针的指针,布布扣,bubuko.com

C中的指针的指针

标签:http   os   文件   2014   io   re   

原文地址:http://my.oschina.net/HughLu/blog/288149

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