C指针,简单了解

指针本质上就是一个值为地址的变量。

int * p1;

如上,p1的值则是一个int类型的变量的地址。

int num1 = 10;
p1 = &num1;

&为地址运算符,将变量num1的地址赋值给int类型指针p1。

int num2 = *p1;

*为间接运算符,作用是取出指针指向地址存储的变量值。p1指针存储的为变量num1的地址,所以*p1就是num1的值。以上代码等同于num2 = num1。

使用指针实现数据交换。

#include <stdio.h>

void swap(int *, int *);

int main(void)
{
	int num1 = 10, num2 = 20;
	
	printf("num1值为%d,地址为%p\n", num1, &num1);
	printf("num2值为%d,地址为%p\n", num2, &num2);
	
    // 传递num1、num2的地址
	swap(&num1, &num2);
	
	return 0;
}

void swap(int * s1, int * s2)
{
    // s1为变量num1的地址,操作存储在s1地址上的值即操作num1本身
	int temp = *s1;
	*s1 = *s2;
	*s2 = temp;

    printf("s1值为%d,地址为%p\n", *s1, s1);
	printf("s2值为%d,地址为%p\n", *s2, s2);
}

输出如下:

num1值为10,地址为000000777f9ff65c
num2值为20,地址为000000777f9ff658
s1值为20,地址为000000777f9ff65c
s2值为10,地址为000000777f9ff658

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值