C语言 第 11节 指针有TM 什么用 - 1

70后说80后太狂,80后说90后太傻,90后说自己是傻B;

太狂的大多都成功了, 太傻的大多还是傻B;

言归正传 这里依然用几个例子 来解释指针的作用

#include <stdio.h>
void exchange(int a, int b);

int main(void)
{
	int x = 10;
	int y = 5;
    printf("old x = %d and old y = %d\n", x, y);
	exchange(x, y);  // 只是将 x 和 y 的值传递给 a 和 b;并没有改变 x 和 y本身的值(最后打印的值可以看出来)
    printf("old x = %d and old y = %d\n", x, y);
    return 0;
}

void exchange(int a, int b)
{
	int temp;
	printf("old a = %d and old b = %d\n", a, b);
	temp = a;
	a = b;
	b = temp;
	printf("new a = %d and new b = %d\n", a, b);	
}

输出:

old x = 10 and old y = 5
old a = 10 and old b = 5
new a = 5 and new b = 10
old x = 10 and old y = 5

接下来用到 指针 来继续完成上面函数没有实现的事情(这里指针就这个D用)

#include <stdio.h>
void exchange(int *a, int *b);

int main(void)
{
	int x = 10;
	int y = 5;
    printf("old x = %d and old y = %d\n", x, y);
	exchange(&x, &y);   //与上面的一个函数的区别在于这里传递的是 x 和 y 的地址 被调函数是对地址中所存储的值进行操作 地址不变 变的的是存储的值
    printf("old x = %d and old y = %d\n", x, y);
    return 0;
}

void exchange(int *a, int *b) // * 这个符号到底是啥意思  书中明确写的这个符号叫 间接运算符; *a 表示指向a地址所存储的值
{
	int temp;
	printf("old *a = %d and old *b = %d\n", *a, *b);
	temp = *a;
	*a = *b;
	*b = temp;
	printf("new *a = %d and new *b = %d\n", *a, *b);	
}

输出:

old x = 10 and old y = 5
old *a = 10 and old *b = 5
new *a = 5 and new *b = 10
old x = 5 and old y = 10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值