几年前做家教写的C教程(之四专讲了指针与汉诺塔问题)
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教程(之四专讲了指针与汉诺塔问题)的更多相关文章
- 几年前做家教写的C教程(之一)
C语言学习宝典 首先让我们认识什么是C语言. C语言是一种计算机开发语言,是一种非常基础的开发语言.能够用C语言做很多事情.C语言是顺序执行的程序. 程序应该包括数据描述,数据操作. C语言的数据类型 ...
- 几年前做家教写的C教程(之五专讲结构体与文件操作)
C语言学习宝典(5) 结构体: 将不同类型的数据组合成为一个有机的整体,这个整体就是一个结构体. 例如: Struct student { Int name; Char sex; Float scor ...
- 几年前做家教写的C教程(之三专讲了递归和斐波那契)
C语言学习宝典(3) 数组: 一维数组的定义: 类型说明符 数组名[常量表达式] 例如: int a[10]; 说明:(1)数组名的命名规则和变量名相同,遵循标示符命名规则 (2)在定义数组时需要 ...
- 几年前做家教写的C教程(之二)
C语言学习宝典(2) 认识C语言中的运算符: (1)算术运算符 (+ - * / %) (2)关系运算符 (> < == >= <= != ) (3 ...
- Java-Runoob-高级教程-实例-方法:03. Java 实例 – 汉诺塔算法-un
ylbtech-Java-Runoob-高级教程-实例-方法:03. Java 实例 – 汉诺塔算法 1.返回顶部 1. Java 实例 - 汉诺塔算法 Java 实例 汉诺塔(又称河内塔)问题是源 ...
- 利用递归解决“汉诺塔的移动”问题(使用python来做的,其它语言也行)
有a,b,c三个柱子,n个盘子. def move(n, a, b, c): if n == 1: print('move', a, '-->', c) else: move(n-1, a, c ...
- Git学习记录 力做全网最强入门教程
目录 Git学习记录 力做全网最强入门教程 什么是GitHub? 什么是Git? Git的配置 Git的安装(只介绍windos操作系统下) Git的配置 至此我们的入门教程到此结束,更新中级教程要等 ...
- 做中学之Vim实践教程
做中学之Vim实践教程 Vim VIM是一个非常好的文本编辑器,很多专业程序员使用VIM编辑代码,即使以后你不编写程序,只要跟文本打交道,都应该学学VIM,可以浏览参考一下普通人的编辑利器--Vim这 ...
- UltraISO做U盘启动盘教程
用UltraISO做U盘启动盘教程 注意:制作前请先备份u盘内重要文件 vista.win7系统需要以管理员身份运行UltraISO,其他系统直接运行即可 1.打开UltraISO选择iso镜像文件 ...
随机推荐
- 用CSS绘制最常见的形状和图形
#rectangle { width: 200px; height: 100px; background: red; } #circle { width: 100px; height: 100px; ...
- Bzoj2850 巧克力王国
Time Limit: 60 Sec Memory Limit: 512 MBSubmit: 505 Solved: 204 Description 巧克力王国里的巧克力都是由牛奶和可可做成的.但 ...
- ionic 白屏
昨天在发布新app的时候发现app在高版本的android的时候发现没有问题,在低版本的android 的时候发现存在白屏的情况,在run中alert,不能弹框,run不能运行, 参考这篇文章 ht ...
- 简要介绍BASE64、MD5、SHA、HMAC几种方法。
加密解密,曾经是我一个毕业设计的重要组件.在工作了多年以后回想当时那个加密.解密算法,实在是太单纯了. 言归正传,这里我们主要描述Java已经实现的一些加密解密算法,最后介绍数字证书. ...
- CLI:如何使用Go开发命令行
CLI或者"command line interface"是用户在命令行下交互的程序.由于通过将程序编译到一个静态文件中来减少依赖,一次Go特别适合开发CLI程序.如果你编写过安装 ...
- Ubuntu 14.04 LTS 安装 spark 1.6.0 (伪分布式)-26号开始
需要下载的软件: 1.hadoop-2.6.4.tar.gz 下载网址:http://hadoop.apache.org/releases.html 2.scala-2.11.7.tgz 下载网址:h ...
- Python学习笔记——元组
1.创建一个元组并给它赋值 >>> aTuple = (123,'abc',4.56,['inner','tuple'],7-9j) >>> aTuple (123 ...
- 使用ASP.NET WEB API构建基于REST风格的服务实战系列教程(一)——使用EF6构建数据库及模型
系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 使用Entity Framework Code First模式构建数据库对象 已经决定使用EF C ...
- 第一次部署Struts2时出现错误java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.class
报如下错误 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) at org. ...
- magic_quotes_gpc和magic_quotes_runtime的区别和用法详解
当你的数据中有一些 " ' 这样的字符要写入到数据库里面,又想不被过滤掉的时候,它就很有用,会在这些字符前自动加上,如 中国地大物博"哈哈" 中国\地大物博&q ...