指針的加減操作


#include <stdio.h>
int main()
{
	//測試指向結構體的指針自減后地址的變化
	typedef struct Student 
	{
		int id;
		char name[10];
		int score;
	}stu;
	stu a = { 1, "xiaoming", 33 };
	printf("結構體的大小為%d\n", sizeof(a));

	stu *p = &a;
	printf("指針p的地址為%d\n", p);
	printf("指針p的大小為%d\n", sizeof(p));
	printf("指針p指向結構體的大小為%d\n", sizeof(*p));

	p--;
	printf("指針p的地址為%d\n", p);
	printf("指針p的大小為%d\n", sizeof(p));

	//測試指向char型的指針自減后地址的變化
	char b = 11;
	char *p1 = &b;
	printf("指針p1的地址為%d\n", p1);
	printf("指針p1的大小為%d\n", sizeof(p1));

	p1--;
	printf("指針p1的地址為%d\n", p1);
	printf("指針p1的大小為%d\n", sizeof(p1));

	//測試二級指針自減后地址的變化
	char **p2 = &p1;
	printf("指針p2的地址為%d\n", p2);
	printf("指針p2的大小為%d\n", sizeof(p2));

	p2--;
	printf("指針p2的地址為%d\n", p2);
	printf("指針p2的大小為%d\n", sizeof(p2));

	return 0;
}

  

 

 

結構體的大小是20,在對指向結構體a的指針p做自減后,他的地址變化量為20;

對指向char型數據的指針做自減后,地址變化量為1;

對二級指針做自減后,地址變化量為4,因為二級指針p2指向的是p1,變化量為p1的大小(32位系統);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM