指针4-指针的运算和指针变量占几个字节

#include <stdio.h>
//2018-05-29

/*
	指针变量的运算
		指针不能相加,不能相乘,也不能相除
		如果两个指针变量指向的是同一快连续空间中的不同存储单元
		则这两个指针变量才可以相减





int main(void)
{
	int i = 5;
	int j = 10;
	int * p = &i;
	int * q = &j;


	int a[5];
	p = &a[1];
	q = &a[4];

	printf("%d个单位\n",q-p);


	return 0;
}
*/

//——————————————————————————————————————————————————————

/*

  一个指针变量到底占几个字节
	预备知识:
		sizeof(数组类型)
		功能:返回值就是该数据类型占的自己数
		例子:
			sizeof(int) = 4
			sizeof(char) = 1
			sizeof(double)=8
			




		  假设p指向char类型变量(1个字节)
		  假设q指向int类型变量(4个字节)
		  假设p指向double类型变量(8个字节)
		  p q r 本身所占字节数是否一样 答案:一样都是4
				
				  总结:
						一个指针变量,无论它指向的变量占几个字节,该指针变量本身只占4个字节

				

				可以这样理解:p,q, r代表的都是地址,若以10进制输出则都是×××,所以是4个字节(个人想法)
				
				看下面的输出就可以知道
					printf("%d,%d,%d\n",sizeof(p),sizeof(q),sizeof(r)); //输出4,4,4
					printf("%d,%d,%d\n",sizeof(*p),sizeof(*q),sizeof(*r)); //输出1,4,8






#include <stdio.h>

int main(void)
{
	char ch = 'A';
	int a = 12;
	double b = 52.4;
	
	char *p = &ch;
	int *q = &a;
	double * r = &b;


	printf("%d,%d,%d\n",sizeof(p),sizeof(q),sizeof(r)); //输出4,4,4
	printf("%d,%d,%d\n",sizeof(*p),sizeof(*q),sizeof(*r)); //输出1,4,8
	sizeof(p);

	
	return 0;

}

 */


1519466375966779.jpg



猜你喜欢

转载自blog.51cto.com/tdcqvip/2121587
今日推荐