C语言学习宝典(4)

指针:可以有效的表示复杂的数据结构,能动态的分配动态空间,方便的使用字符串,有效的使用数组,能直接处理内存单元

不掌握指针就没有掌握C语言的精华

地址:系统为每一个变量分配一个内存单元,内存区的每一个字节有一个编号,这就是“地址”

指针的定义; 基类型 * 指针变量名

例如 int *pointer;

可以使用赋值语句使一个指针变量得到另一个变量的地址,从而使它指向一个该变量。

例1  通过指针变量访问整形变量

/*******************

  功能:通过指针变量访问整形变量

*********************/

#include <stdio.h>

void main()

{

         int a,b;

         int *pointer1,*pointer2;

         a=;b=;

         pointer1=&a;

         pointer2=&b;

         printf("%d %d\n",a,b);

         printf("%d %d\n",*pointer1,*pointer2);

}

例2 对于a,b两个整数,按先大后小的顺序输出

/*******************

  功能:利用指针函数比较两个数的大小,输出

*******************/

#include <stdio.h>

void main()

{

         void swap(int *p1,int *p2);

         int a,b;

         int *pointer1,*pointer2;

         scanf("%d%d",&a,&b);

         pointer1=&a;

         pointer2=&b;

         if(a<b)

                   swap(pointer1,pointer2);

         printf("%d\n%d\n",a,b);

}

void swap(int *p1,int *p2)

{

         int temp;

         temp=*p1;

         *p1=*p2;

         *p2=temp;

}

例3 Hanoi(汉诺塔)古代有一个梵塔,塔内有3个座A,B,C.开始A上有64个盘子,盘子大小不等,大的在下,小的在上边,有一个老和尚想把64个盘子从A移动到C座上,在移动的过程中始终保持大盘在下,小盘在上边。

/********************
功能:递归解决Hanoi塔问题
********************/
#include <stdio.h> void main() { void Hanoi(int n,char one,char two,char three); int m; printf("Input The Number Of The Diskes:\n"); scanf("%d",&m); printf("The Step Of Moving %d Diskes:\n",m); Hanoi(m,'A','B','C'); } void Hanoi(int n,char one,char two,char three) {//将n个盘从第一座移动到第二座再移动到第三座 void move(char x,char y); if(n==) move(one,three); else
{ Hanoi(n-,one,three,two); move(one,three); Hanoi(n-,two,one,three); }
} void move(char x,char y)
{ printf("%c-->%c\n",x,y); }

几年前做家教写的C教程(之四专讲了指针与汉诺塔问题)的更多相关文章

  1. 几年前做家教写的C教程(之一)

    C语言学习宝典 首先让我们认识什么是C语言. C语言是一种计算机开发语言,是一种非常基础的开发语言.能够用C语言做很多事情.C语言是顺序执行的程序. 程序应该包括数据描述,数据操作. C语言的数据类型 ...

  2. 几年前做家教写的C教程(之五专讲结构体与文件操作)

    C语言学习宝典(5) 结构体: 将不同类型的数据组合成为一个有机的整体,这个整体就是一个结构体. 例如: Struct student { Int name; Char sex; Float scor ...

  3. 几年前做家教写的C教程(之三专讲了递归和斐波那契)

    C语言学习宝典(3) 数组: 一维数组的定义: 类型说明符  数组名[常量表达式] 例如: int  a[10]; 说明:(1)数组名的命名规则和变量名相同,遵循标示符命名规则 (2)在定义数组时需要 ...

  4. 几年前做家教写的C教程(之二)

    C语言学习宝典(2) 认识C语言中的运算符: (1)算术运算符   (+  -  *  /  %) (2)关系运算符    (>  <  ==  >=  <=  != ) (3 ...

  5. Java-Runoob-高级教程-实例-方法:03. Java 实例 – 汉诺塔算法-un

    ylbtech-Java-Runoob-高级教程-实例-方法:03. Java 实例 – 汉诺塔算法 1.返回顶部 1. Java 实例 - 汉诺塔算法  Java 实例 汉诺塔(又称河内塔)问题是源 ...

  6. 利用递归解决“汉诺塔的移动”问题(使用python来做的,其它语言也行)

    有a,b,c三个柱子,n个盘子. def move(n, a, b, c): if n == 1: print('move', a, '-->', c) else: move(n-1, a, c ...

  7. Git学习记录 力做全网最强入门教程

    目录 Git学习记录 力做全网最强入门教程 什么是GitHub? 什么是Git? Git的配置 Git的安装(只介绍windos操作系统下) Git的配置 至此我们的入门教程到此结束,更新中级教程要等 ...

  8. 做中学之Vim实践教程

    做中学之Vim实践教程 Vim VIM是一个非常好的文本编辑器,很多专业程序员使用VIM编辑代码,即使以后你不编写程序,只要跟文本打交道,都应该学学VIM,可以浏览参考一下普通人的编辑利器--Vim这 ...

  9. UltraISO做U盘启动盘教程

    用UltraISO做U盘启动盘教程 注意:制作前请先备份u盘内重要文件 vista.win7系统需要以管理员身份运行UltraISO,其他系统直接运行即可 1.打开UltraISO选择iso镜像文件 ...

随机推荐

  1. noip2016十连测round2

    A: Divisors 题意:给定 m 个不同的正整数 a 1 ,a 2 ,...,a m ,请对 0 到 m 每一个 k 计算,在区间 [1,n] 里有多少正整数 是 a 中恰好 k 个数的约数. ...

  2. top命令

    TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中C ...

  3. WebService如何调试及测试工具

    http://www.cnblogs.com/zfanlong1314/archive/2012/04/06/2434788.html 通常,我们在Visual Studio里调试ASP.NET网站, ...

  4. ArcEngine地图窗口指定区域导出指定DPI多格式---delphi/C#实现

    delphi/C#实现,其他语言稍微改下就行了.AE的编码各个语言都差不多,这里也没用到某一语言的特性. 函数特点: 1.可以精确导出指定范围的图形要素 2.支持多格式.TIF, .EMF,.GIF, ...

  5. 面试题目——《CC150》数学与概率

    面试题7.2:三角形的三个顶点上各有一只蚂蚁.如果蚂蚁开始沿着三角形的边爬行,两只或三只蚂蚁撞到一起的概率有多大?假定每只蚂蚁会随机选一个方向,每个方向被选到的几率相等,而且三只蚂蚁的爬行速度相同. ...

  6. IO

    文件过滤 http://codego.net/9245/ C# 文件处理 http://wenku.baidu.com/link?url=yXKiIA_OZYR4MIynDgz-qhOnfJoCyOQ ...

  7. [Head First设计模式]面向对象的3特征5原则

    系列文章 [Head First设计模式]山西面馆中的设计模式——装饰者模式 [Head First设计模式]山西面馆中的设计模式——观察者模式 [Head First设计模式]山西面馆中的设计模式— ...

  8. Excel—身份证生日提取

    一.只有18位的身份证号码 如: 身份证号 330682199302264000 41120019890823729X 231081199002256839 131101198203154666 36 ...

  9. 日期控件jsdate用法注意事项

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. PHP中常见的五种设计模式

    设计模式只是为 Java架构师准备的 — 至少您可能一直这样认为.实际上,设计模式对于每个人都非常有用.如果这些工具不是 “架构太空人” 的专利,那么它们又是什么?为什么说它们在 PHP 应用程序中非 ...