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

指针,指针,指针。。。

时间:2014-09-01 17:52:13      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:指针

1、指针常量与常量指针

int a = 10;
int * const p1 = &a;
const int * p2 = &a;

p1是不可改变地址的常量,即指针常量,但可以对它所指向的内容进行修改。

p2是指向常量的指针,即常量指针,它所指向的地址内容是不可修改的,但其本身确实可以修改的。

2、指针运算

#include<stdio.h>
int main()
{
	int *ip1,*ip2,ivalue;
	char *cp1,*cp2,cvalue;
	ip1 = (int*)0x500;
	ip2 = (int*)0x518;
	ivalue = ip2 - ip1;
	cp1 = (char*)0x500;
	cp2 = (char*)0x518;
	cvalue = cp2 - cp1;
	printf ("ivalue=%d  cvalue=%d\n",ivalue,cvalue);
	return 0;
}
运行结果:ivalue=6  cvalue=24

指针进行运算时,它的值与其类型有关。两个地址同样相差24个字节,以整形指针相减结果为 24/4=6;以字符指针相减结果为 24/1=24;

3、指针与数组

#include<stdio.h>
int main()
{
	int a[2][3][4] = {
		{{101,102,103,104},{111,112,113,114},{121,122,123,124}},
		{{201,202,203,204},{211,212,213,214},{221,222,223,224}}
	};
	printf("%d\t%d\n",**(a[0]+2),sizeof(a));
	return 0;
}
输出结果:121 96

分析:对于一位数组a,*a等价于a[0],*(a+2)等价于a[2]。同理对于多维数组*a[0]等价于a[0][0],*(a[0]+2)等价于a[0][2],**(a[0]+2)等价于*a[0][2]等价于a[0][2][0]。
sizeof(a)计算数组a所占内存空间:(2*3*4)*4Byte=96Byte。


指针,指针,指针。。。

标签:指针

原文地址:http://blog.csdn.net/crazy_xiaohe/article/details/38980761

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