斩妖者

食之得不得,究通由天作主,予夺由人作主,业之精不精,由我作主。然吾未见业果精而终不得食者也。...

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

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaofei19900927/article/details/79974209
文章标签: C
个人分类: C语言
所属专栏: C语言学习
上一篇C语言 第 10节 堆栈问题
下一篇C语言 第 12节 从冒泡排序-看你适不适合做软件开发
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭