C语言学习宝典(4)

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

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

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

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

例如 int *pointer;

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

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

  1. /*******************
  2.  
  3. 功能:通过指针变量访问整形变量
  4.  
  5. *********************/
  6.  
  7. #include <stdio.h>
  8.  
  9. void main()
  10.  
  11. {
  12.  
  13. int a,b;
  14.  
  15. int *pointer1,*pointer2;
  16.  
  17. a=;b=;
  18.  
  19. pointer1=&a;
  20.  
  21. pointer2=&b;
  22.  
  23. printf("%d %d\n",a,b);
  24.  
  25. printf("%d %d\n",*pointer1,*pointer2);
  26.  
  27. }

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

  1. /*******************
  2.  
  3. 功能:利用指针函数比较两个数的大小,输出
  4.  
  5. *******************/
  6.  
  7. #include <stdio.h>
  8.  
  9. void main()
  10.  
  11. {
  12.  
  13. void swap(int *p1,int *p2);
  14.  
  15. int a,b;
  16.  
  17. int *pointer1,*pointer2;
  18.  
  19. scanf("%d%d",&a,&b);
  20.  
  21. pointer1=&a;
  22.  
  23. pointer2=&b;
  24.  
  25. if(a<b)
  26.  
  27. swap(pointer1,pointer2);
  28.  
  29. printf("%d\n%d\n",a,b);
  30.  
  31. }
  32.  
  33. void swap(int *p1,int *p2)
  34.  
  35. {
  36.  
  37. int temp;
  38.  
  39. temp=*p1;
  40.  
  41. *p1=*p2;
  42.  
  43. *p2=temp;
  44.  
  45. }

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

  1. /********************
  2. 功能:递归解决Hanoi塔问题
  3. ********************/
  4. #include <stdio.h>
  5.  
  6. void main()
  7.  
  8. {
  9.  
  10. void Hanoi(int n,char one,char two,char three);
  11.  
  12. int m;
  13.  
  14. printf("Input The Number Of The Diskes:\n");
  15.  
  16. scanf("%d",&m);
  17.  
  18. printf("The Step Of Moving %d Diskes:\n",m);
  19.  
  20. Hanoi(m,'A','B','C');
  21.  
  22. }
  23.  
  24. void Hanoi(int n,char one,char two,char three)
  25.  
  26. {//将n个盘从第一座移动到第二座再移动到第三座
  27.  
  28. void move(char x,char y);
  29.  
  30. if(n==)
  31.  
  32. move(one,three);
  33.  
  34. else
  35. {
  36.  
  37. Hanoi(n-,one,three,two);
  38.  
  39. move(one,three);
  40.  
  41. Hanoi(n-,two,one,three);
  42.  
  43. }
  44. }
  45.  
  46. void move(char x,char y)
  47. {
  48.  
  49. printf("%c-->%c\n",x,y);
  50.  
  51. }

几年前做家教写的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. 图解Javascript原型链

    本文尝试阐述Js中原型(prototype).原型链(prototype chain)等概念及其作用机制.上一篇文章(图解Javascript上下文与作用域)介绍了Js中变量作用域的相关概念,实际上关 ...

  2. redis-介绍与比较

    <一>. NoSQL简介:    NoSQL是Not-Only-SQL的缩写,是被设计用来替换传统的关系型数据库在某些领域的用,特别针对web2.0站点以及大型的SNS网站,用来满足高并发 ...

  3. 【USACO 3.1】Contact(01子串按出现次数排序)

    题意:给你一个01字符串,将长度为a到b之间(包含a.b)的子串按照出现次数排序.注意输入输出格式 题解:01子串对应一个二进制,为了区别11和011这样的不同子串,我们把长度也记录下来,官方题解是在 ...

  4. Android Studio各种快捷功能及好用的插件

    转载:http://www.jianshu.com/p/c439605a4364 概述 现如今开发越来越追求效率和节奏,节省出时间做更多的事情,除了开发技术上的封装等,开发工具的使用技巧也是很重要的, ...

  5. Leetcode 39. Combination Sum

    Given a set of candidate numbers (C) (without duplicates) and a target number (T), find all unique c ...

  6. asp.net form身份认证不定时认证失败的问题 排查

    1.网站出现form认证不定时认证失败.登陆过后 每隔一会儿就需要重新登陆.首先检查的是form身份认证票据设置的时间(正常) 然后检查加密后的身份认证信息写入的cookie的失效时间(正常) 2.这 ...

  7. 【Beta】Scrum04

    Info 由于上次验收基本没有人按时完成,缓冲一个任务周期. 时间:2016.12.06 21:30 时长:25min 地点:大运村1号公寓5楼楼道 类型:日常Scrum会议 NXT:2016.12. ...

  8. 图解JVM字节码执行引擎之栈帧结构

    一.执行引擎      “虚拟机”的概念是相对于“物理机”而言的,这两种“机器”都有执行代码的能力.物理机的执行引擎是直接建立在硬件处理器.物理寄存器.指令集和操作系统层面的:而“虚拟机”的执行引擎是 ...

  9. ubuntu下安装numpy和matplotlib

    安装NumPy函数库--sudo apt-get install python-numpy 以及  sudo apt-get install python-scipy NumPy函数库的函数查看:Nu ...

  10. MySQL 5.6 新参数对binlog日志量的优化

    数据库版本:5.6.* 1.row日志image类型 参数binlog_row_image 控制着这种image类型,默认为FULL(log all columns),即记录before&af ...