指针、指针变量、解引用

指针是什么

指针就是地址
我们都知道计算机的内存。计算机中所有程序的运行都是在内存中进行的。所以为了有效的使用内存,就把内存划分成一个个小的内存单元,为了更好的访问内存单元,就给内存单元进行了编号,这里 “编号” 就称为 地址

指针变量

  • 有变量就会有空间、变量名、变量内容,那么变量的地址如何储存我们就需要指针变量,指针变量也是普通变量,但是它里面存放的内容时变量的地址。

指针的变量及其初始化

1、&a: 取地址符(单目运算符):在此时,&的含义是去变量a的地址

scanf("%d",&a)

2、 int *p=&a;这是定义一个指针变量 这时候int *p定义了一个指向int类型指针p,

int main()
{
    
    
	int a = 10;
	int*p = &a;
	printf("%d\n", a);
	printf("%p\n", &a);
	printf("%p\n", p);
	system("pause");
	return 0;
}

运行结果为:

10
00D8FDCC
00D8FDCC

我们可看到&a表示的是a 的地址,指针变量p表示也是a的地址

3、*p :解引用 :它所指的值是指针指向变量的值,并不是地址。

int main()
{
    
    
	int a = 10;
	int*p = &a;
	printf("%d\n", a);
	printf("%p\n", &a);
	printf("%p\n", p);
	printf("%d\n", *p);
	system("pause");
	return 0;
}

运行结果为:

10//------->对应的a的值
00EFFA74//-------->对应的是a的地址
00EFFA74//--------->对应的是a的地址
10//-------->对应的a变量的内容
  • 多次解引用
int main()
{
    
    
	int a = 10;
	int*p = &a;
	int* q = p;
	
	printf("p = %p\n", p);
	printf("*p = %d\n", *p);
	printf("q = %p\n", q);
	printf("*q = %d\n", *q);
	system("pause");
	return 0;
}

运行结果

p = 008FFCA0
*p = 10
q = 008FFCA0
*q = 10
请按任意键继续. . .

需要注意的是 int*p = a 中 p所指的是变量a的地址;*p 所指的是变量a的内容。

猜你喜欢

转载自blog.csdn.net/supermanman_/article/details/109286880