指针和指针类型(指针+-数组以及指针的解引用)

这里我们在讨论一下:指针的类型 我们都知道,变量有不同的类型,整形,浮点型等。
那指针有没有类型呢? 准确的说:有的。

看下边这段代码:

	int num = 10;
	p = #

要将&num(num的地址)保存到p中,我们知道p就是一个指针变量,那它的类型是怎样的呢? 我们给指针变量 相应的类型。

char  *pc = NULL; 
int   *pi = NULL;
 short *ps = NULL; 
 long  *pl = NULL; 
 float *pf = NULL; 
 double *pd = NULL;

这里可以看到,指针的定义方式是: type + * 。 其实: char* 类型的指针是为了存放 char 类型变量的地址。 short* 类型的指针是为了存放 short 类型变量的地址。 int* 类型的指针是为了存放 int 类型变量的地址。

那指针类型的意义是什么?

指针+-整数

看下面一段代码:

#include
#include

int main()
{
	int n = 10;
	char *pc = (char*)&n;
	int *pi = &n;

	printf("%p\n", &n);
	printf("%p\n", pc);
	printf("%p\n", pc+1);
	printf("%p\n", pi);
	printf("%p\n", pi+1);

	system("pause");
	return 0;
}

指针和指针类型(指针+-数组以及指针的解引用)_第1张图片
总结:指针的类型决定了指针向前或者向后走一步有多大(距离)

指针的解引用

#include
#include

int main()
{
	int n = 0x11223344;
	char *pc = (char*)&n;
	char *pi = (char*)&n;
	*pc = 0x55;
	*pi = 0;

	system("pause");
	return 0;
}

总结:指针类型决定了,对指针解引用的时候有多大的权限(能操作几个字节),比如:char的解引用就只能访问一个字节,而int的指针的解引用就能访问四个字节

你可能感兴趣的:(C)