C语言之指针笔记(1)

指针(pointer)是C语言中最重要的概念之一,用于储存变量的地址。
1.&运算符
(1)一元&运算符可给出变量的存储地址。如过pooh是变量名,那么&pooh是变量地址。
(2)如下例所示,使用运算符查看不同函数中的同名变量储存在什么位置。
源代码:

//查看变量被储存在何处
#include <stdio.h>
void mikado(int); //函数原型
int main(void)
{
	int pooh = 2, bah = 5; //main()的局部变量
	
	printf("In main(), pooh = %d and &pooh = %p\n", pooh, &pooh);
	printf("In main(), bah = %d and &bah = %p\n", bah, &bah);
	mikado(pooh);
	
	return 0;
	
}

void mikado(int bah) //定义函数
{
	int pooh = 10;
	
	printf("Int mikado(),pooh = %d and &pooh = %p\n", pooh, &pooh);
	printf("In mikado(), bah = %d and &bah = %p\n", bah, &bah);
}

(3)运行结果:
在这里插入图片描述
可以看出,两个pooh和bah的地址不同,在计算机中,它们是四个独立的变量,具有不同的地址。
2.指针简介
从根本上说,指针是一个值为内存地址的变量。如int类型的变量的值是整数,指针变量的值是地址。
假设一个指针变量名是ptr,那么可以编写如下语句:

ptr = &pooh; //吧pooh的地址赋给ptr

对于这条语句,我们说ptr“指向”pooh。ptr和&pooh的区别是ptr是变量,而&pooh是常量。
(1)间接运算符:*
假设ptr指向bah,使用间接运算符(indirection operator)找出储存在bah中的值。

ptr = &bah;
val = *ptr; //找出ptr指向的值

相当于

val = bah;

在这里插入图片描述
(2)声明指针
声明指针变量必须指定指针所指向变量的类型,因为不同的变量类型占用不同的存储空间。此外,程序必须知道储存在指定地址上的数据类型。例如:
在这里插入图片描述
类型说明符表明了指针所指向对象的类型,型号()表明声明的变量是一个指针。intpi;声明的意思是pi是一个指针,pi是int类型。
(3)使用指针在函数间通信
交换两个变量的值。
源代码:

//使用指针解决交换函数的问题
#include <stdio.h>
void interchange(int * u, int * v);

int main(void)
{
	
	int x = 5, y = 10;
	printf("Oringinally x = %d and y = %d.\n", x, y);
	interchange(&x, &y); //把地址发送给函数
	printf("Now x = %d and y = %d.\n", x, y);
	
	return 0;
}

void interchange(int * u, int * v)
{
	int temp;
	temp = *u; //temp获得u所指对象的值
	*u = *v;
	*v = temp;
}

其中,interchange(&x, &y)传递的是x和y的地址。
在这里插入图片描述
运行结果:
在这里插入图片描述

参考文献:C Primer Plus

猜你喜欢

转载自blog.csdn.net/Cuixinyang19_/article/details/83691196