指針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

相關文章
相關標籤/搜索