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

原创 2018年04月17日 14:56:32

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

Tiny语言编译器之TM虚拟机开发

这里的虚拟机是是Tiny语言的运行环境,源代码如下: #include #include #include #include #ifndef TRUE #define TRUE 1 #endi...
  • hexiaomin_1984
  • hexiaomin_1984
  • 2014-02-24 15:04:06
  • 723

C语言指针,你都了解了吗?

核心内容: 1、C语言指针的核心知识点 2、处理指针相关问题的万能措施—-内存分配图 3、C语言的指针是如何过渡到Java中的引用的最近一段时间一直在学习C语言的指针,也算是颇有心得吧,虽然从网...
  • a2011480169
  • a2011480169
  • 2017-01-11 11:35:01
  • 3054

指针才是C的精髓-4.3.C语言高级专题第3部分

本课程的主要内容是指针,用10节课五六个小时,从10个角度讲了指针的用法和相关知识点。其中有很多都是C程序员难以理解或者难以应用到实践编程中的知识点,也是嵌入式程序员面试笔试时经常遇到的题目。本课程的目标是让大家深入理解指针的各种使用技巧。
  • 2015年09月15日 16:04

C语言中tm结构体

struct tm{  int tm_sec;                   /* Seconds.     [0-60] (1 leap second) */  int tm_min;    ...
  • xuefu2008
  • xuefu2008
  • 2009-10-12 09:26:00
  • 4804

为什么说指针是 C 语言的精髓?

简单来说,因为C就那点破feature,如果你把指针干掉,那这语言就完了。相反,如果你干掉struct,干掉union,干掉数组,甚至你把if-while都干掉,留下malloc和goto,则最多就是...
  • u012275397
  • u012275397
  • 2015-02-02 14:02:56
  • 1166

Tiny语言编译器和TM虚拟机的实现(1)

写在前面 编译器,虚拟机,操作系统等重大课题,不比现代日新月异的新技术,它们其中蕴含的思想和原理是经典的,它们会对自己的编程水平有着潜移默化的影响。 自己一直就想写一个编译器或者虚拟机。目的不在...
  • Zha_World
  • Zha_World
  • 2017-12-27 16:29:06
  • 139

C中双重指针的使用的易错点

写blog之前,看了很多CSDN的文章,都表示坚持写blog对一个程序员来说是很好的习惯,我以前也觉得写blog也只是浪费时间和精力,觉得自己弄懂了就好,然而事实上过一段时间后碰到相同的问题却还是需要...
  • in_aday
  • in_aday
  • 2015-07-23 10:38:41
  • 2260

C语言指针理解到深入(1)

为叙述方便,统一一下地址和指针的说法,本文中地址定义为内存位置,指针定义为带存储结构描述的地址,没有特别说明指针指的是一级指针,指针变量定义为存放指针的变量!在32位系统中,内存寻址范围为0x0000...
  • dz2015
  • dz2015
  • 2015-09-21 22:20:35
  • 345

C语言编程:有n个人围成一圈,顺序排号。从第一个人开始报数...

题目:有N个人,从1到N编号,按照编号顺序围成一圈。从第一个人开始报数(从1报到3),凡报到3的人退出圈子。问:最后留下的人的编号是几号。==============================这...
  • baidu_33836580
  • baidu_33836580
  • 2016-01-25 11:53:28
  • 13634

你需要知道关于C语言指针的一切

Everything you need to know about pointers in C 你需要知道关于C语言指针的一切 指针的定义 指针是内存地址。 (嗯,简短的段落。...
  • sergeycao
  • sergeycao
  • 2016-12-15 13:01:18
  • 3714
收藏助手
不良信息举报
您举报文章:C语言 第 11节 指针有TM 什么用 - 1
举报原因:
原因补充:

(最多只允许输入30个字)