1. 程式人生 > >C語言:指標練習題(1)

C語言:指標練習題(1)

練習1:

#include <stdio.h>
#include <stdlib.h>
int main()
{
	int a[5] = { 1, 2, 3, 4, 5 };
	int* ptr = (int*)(&a + 1);
	printf("%d %d", *(a + 1), *(ptr - 1));
	system("pause");
	return 0;
}

輸出結果為:2; 5

題目分析:

練習2:

struct Test
{
	int Num;
	char *pcName;
	short sDate;
	char cha[2];
	short sBa[4];
}*p;

int main()
{
	p = (struct Test*)0x100000;
	printf("%p\n", p + 0x1);
	printf("%p\n", (unsigned long)p + 0x1);
	printf("%p\n", (unsigned int*)p + 0x1);
}

輸出結果:0x100014;0x100001;0x100004

分析:

練習3:

int main()
{
	int a[4] = { 1, 2, 3, 4 };
	int *ptr1 = (int *)(&a + 1);
	int *ptr2 = (int *)((int)a + 1);
	printf("%x,%x", ptr1[-1], *ptr2);
	return 0;
}

輸出結果:4;2000000

分析:

練習4:

#include <stdio.h>
#include <stdlib.h>

int main(int argc,char* argv[])
{
	int a[3][2] = { (0, 1), (2, 3), (4, 5) };
	int *p;
	p = a[0];
	printf("%d", p[0]);
}

輸出結果:1

分析: