C语言为什么指针指到末尾了第二个循环还能开始呢

1.程序结构是三种: 顺序结构 、选择結构(分支结构)、循环结构

2.读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数是程序运行嘚起点。

3.计算机的数据在电脑中保存是以 二进制的形式. 数据存放的位置就是 他的地址

5.编译预处理不是C语言的一部分,不占运行时间不偠加分号。C语言编译的程序称为源程序它以ASCII数值存放在文本文件中。

7.在函数中不可以再定义函数即函数不可嵌套定义,但可以嵌套调鼡

8.算法:可以没有输入,但是一定要有输出

10.每个C语言程序写完后,都是先编辑编译,链接最后运行。(.c—>.obj—>.exe)这个过程中注意.c和.obj攵件时无法运行的只有.exe文件才可以运行。(常考!)

11.标识符(必考内容):
合法的要求是由字母数字下划线组成有其它元素就错叻。并且第一个必须为字母或则是下划线第一个为数字就错了。

关键字:不可以作为用户标识符号maindefine scanfprintf 都不是关键字。迷惑你的地方If是可鉯做为用户标识符因为If中的第一个字母大写了,所以不是关键字

十进制转换成二进制、八进制、十六进制。
二进制、八进制、十六进淛转换成十进制

14.C语言只有十六进制,没有二进制但是运行时候,所有的进制都要转换成二进制来进行处理

15.C语言中的八进制規定要以0开头,十六进制规定要以0x开头

16.小数的合法写法:C语言小数点两边有一个是零的话,可以不用写比如:
1.0在C语言中可写成1.
0.1在C语言Φ可以写成.1。

17.e前e后必有数e后必为整数

18.整型一般是4个字节, 字符型是1个字节,双精度一般是8个字节

19.表达式一定有数值!
1、算术表达式:+,-*,/%
“/” 两边都是整型的话,结果就是一个整型 3/2的结果就是1.
“/” 如果有一边是小数,那么结果就是小数 3/2.0的结果就是0.5
“%”符号请一定偠注意是余数,考试最容易算成了除号%符号两边要求是整数。不是整数就错了
2、赋值表达式:表达式数值是最左边的数值,a=b=5;该表达式為5常量不可以赋值。
1、int x=y=10: 错啦定义时,不可以连续赋值
3、赋值的左边只能是一个变量。

自加、自减表达式:假设a=5++a(是为6), a++(为5);
运行的机理:++a 是先把变量的数值加上1然后把得到的数值放到变量a中,然后再用这个++a表达式的数值为6而a++是先用该表达式的数值为5,然後再把a的数值加上1为6
再放到变量a中。 进行了++a和a++后 在下面的程序中再用到a的话都是变量a中的6了

考试口诀:++在前先加后用,++在后先用后加

优先级别最低。表达式的数值逗号最右边的那个表达式的数值
(2,34)的表达式的数值就是4。
z=(23,4)(整个是赋值表达式) 这个时候z的徝为4
z= 2,34 (整个是逗号表达式)这个时候z的值为2。

22.注释不是C语言不占运行时间,没有分号不可以嵌套。

一定是 (int)a 不是 int(a)注意類型上一定有括号的。
注意(int)(a+b) 和(int)a+b 的区别 前是把a+b转型,后是把a转型再加b

1)字符数据的合法形式::
‘1’ 是字符占一个字节,"1"是芓符串占两个字节(含有一个结束符号)

一般考试表示单个字符错误的形式:‘65’ “1” 字符是可以进行算术运算的,记住: ‘0’-0=48

大写字母囷小写字母转换的方法: ‘A’+32=‘a’ 相互之间一般是相差32 2)转义字符:


转义字符分为一般转义字符、八进制转义字符、十六进制转义字苻
八进制转义字符: ‘\141’ 是合法的 前导的0是不能写的。
十六进制转义字符:’\x6d’ 才是合法的前导的0不能写,并且x是小写

总的处理方法:几乎所有的位运算的题目都要按这个流程来处理(先把十进制变成二进制再变成十进制)
    b = a<<2; 这种题目的计算是先要把a的十進制6化成二进制再做位运算。
例3: 在没有舍去数据的时候<<左移一位表示乘以2;>>右移一位表示除以2。

按位与运算按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与只有对应的两个二进位均为1时,结果位才为1 否则为0 。参与运算的数以补码方式出现

按位或运算。按位或运算符“|”是双目运算符其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1時结果位就为1。参与运算的两个数均以补码出现 例如:9|5可写算式如下:

按位异或运算。按位异或运算符’其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时结果为1。参与运算数仍以补码出现例如:
一定要记住,异或的位运算符号” ^ ”0 异戓 1得到1。
0 异或 0得到0两个女的生不出来

考试记忆方法:一男(1)一女(0)才可以生个小孩(1)

左移运算。左移运算符“<<”是双目运算符其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数 高位丢弃,低位补0例如: a<<4 指把a的各二进位向左移动4位。如a=(十进制3)左移4位后为(十进制48)。

第二章(数据的输入输出)

2.C语言本身没有输入输出语句输入输出操作是由标准库中的函数来实现的。

鼡#include“ ”时编译系统先在用户的当前目录中(一般是用户存放源程序文件的子目录)去找所要包含的文件,若找不到在按标准的方式查找。

5.用%d来输出十进制整数

用%f来输出一个浮点数(保留6位有效数字)

可以用 %m.nf来指定数据的宽度和小数位数 如%7.2f代表输出的数据占7列其中小数蔀分占两位。

用%e是指定以指数形式输出实数如果不指定输出数据所占的宽度和数字部分的小数位数,许多编译系统默认小数部分占6位指数部分占5列(如e+002,e占一列+占一列,指数占三列)数值按标准化的指数形式输出(即小数点前必须有而且只有一位非零数字)。

%i 作用與d格式相同按十进制整数输出。

%o 以八进制整数输出

%x以十六进制整数输出

%u用来输出无符号型数据,以十进制整数形式输出

6.输出的数据姠左对齐,用%-m.mf(一般不写负号默认右端对齐)

7.如果想输出字符%应该在“格式控制字符串中”连续用两个%表示。

一定要记住是以第一部分嘚格式在终端输入数据考试核心为:一模一样。
在黑色屏幕上面输入的为 a=12b=34才可以把12和34正确给a和b 。有一点不同也不行

9.scanf(“%d,%d”x,y);这种写法绝对错误scanf的第二个部分一定要是地址!

13.输入时候字符和整数的区别(考试超级重点)
scanf(“%d”,&x);这个时候输入1特别注意表示的是整数1
scanf(“%c”,&x);这个时候输入1特别注意表示的是字符‘1’ASCII为整数48

14.输入数值时,在两个数值之间需要插入空格(或者其他分隔苻)以使系统能区分两个数值。
在连续输入字符时两个字符之间不要插入空格或其他分隔符,因为系统能区分两个字符

15.在输入输出數值型数据时,如遇空格回车,tab键或遇非法字符(不输入数值的字符)则认为该数据结束。

3)如何实现两个变量x y中数值的互换(要求背下来)

4)如何实现保留三位小数,第四位四舍五入的程序(要求背下来)
y=(int)(x)/1000.0 这个保留三位,对第四位四舍五入
y=(int)(x*)/10000.0 这个保留四位对第五位四舍五入

a、else 是与最接近的if且没有else的语句匹配。

b、交换的程序写法:t=x;x=y;y=t;

e.else不能作为语句单独使用它必须是if语句的一蔀分。与if配套使用。

2.C语言中是用非0表示逻辑真的用0表示逻辑假的。
C语言有构造类型没有逻辑类型。
if只管后面一个语句要管多个,請用大括号!

a、表达式的数值只能为1(表示为真)或0(表示假)。
如 9>8这个关系表达式是真的所以9>8这个表达式的数值就是1。
如 7<6这个关系表达式是假的所以7<6这个表达式的数值就是0。

错的但是如果是C语言那么就是正确的!因为要1<0为假得到0,表达式就变成了0<2那么运算结果就昰1称为了真的了!

c、等号和赋值的区别!一定记住“=”就是赋值,“= =”才是等号

核心:表达式的数值只能为1(表示为真),或0(表示假)
c) 注意短路现象。考试比较喜欢考到
d) 表示 x 小于0大于10的方法。

5.条件表达式: 表达式1 表达式2 :表达式3 (结合性从右至左)
注意是当表達式1的数值是非0时,才采用表达式2的数值做为整个运算结果当表达式1的数值为0时,就用表达式3的数值做为整个的结果

a. 注意有break 和没有break的差别,书上的两个例子没有break时候,只要有一个case匹配了剩下的都要执行,有break则是直接跳出了swiche语句break在C语言中就是分手,一刀两断的意思

c. switch可以没有default标号,此时如果没有与switch表达式匹配的case常量则不执行任何语句,流程转到switch语句的下一个语句

d.每个case常量必须互不相同。

b)for循环當中必须是两个分号千万不要忘记。

c)写程序的时候一定要注意循环一定要有结束的条件,否则成了死循环

d) do-while()循环的最后一个while();的分号┅定不能够丢。(当心上机改错)do-while循环是至少执行一次循环

break:是打破的意思(破了整个循环)所以看见break就退出整个一层循环 。
continue: 昰继续的意思(继续循环运算),但是要结束本次循环就是循环体内剩下的语句不再执行,跳到循环开始然后判断循环条件,进行噺一轮的循环

2.、一维数组的定义;
int a[5];注意这个地方有一个重要考点,定义时数组的个数不是变量一定是常量
int a[1+1] 合法,个数是常量2是个算术表达式

如果在被调用的函数中定义数组,其长度可以是变量或非变量表达式 如 void func(int c)

1)一维数组的重要概念:
对a[10]这个数组的讨论。
1、a表示数组名是第一个元素的地址,也就是元素a[0]的地址(等价于&a)
2、a是地址常量,所以只要出现a++或者是a=a+2赋值的都是错误的。
3、a昰一维数组名所以它是列指针,也就是说a+1是跳一列

1、a表示数组名,是第一个元素的地址也就是元素a[0][0]的地址。
2、a是地址常量所鉯只要出现a++,或者是a=a+2赋值的都是错误的
3、a是二维数组名,所以它是行指针也就是说a+1是跳一行。
4、a[0]、a[1]、a[2]也都是地址常量不可以对咜进行赋值操作,同时它们都是列指针a[0]+1,a[1]+1a[2]+1都是跳一列。

5.注意a和a[0] 、a[1]、a[2]是不同的它们的基类型是不同的。前者是一行元素后三者是一列元素

7.二维数组做题目的技巧:
步骤一:把他们写成:第一列 第二列 第三列  
步骤二:这样作题目间很简单:    
*(a[0]+1)我们就知噵是第一行的第一个元素往后面跳一列那么这里就是a[0][1]元素,所以是1
*(a[1]+2)我们就知道是第二行的第一个元素往后面跳二列。那么这里就是a[1][2]え素所以是6。

9.二维数组中的行指针
其中a现在就是一个行指针a+1跳一行数组元素。搭配( * )p[2]指针数组

a[0]a[1]现在就是一个列指针。a[0]+1 跳一个数组元素搭配*p[2]指针数组使用

还有记住脱衣服法则:超级无敌重要

1.字符型数据是以ascll码存储在存储单元的,一般占一个字节

2.C语言中没有字符串类型,字符串都是存放在字符数组中的
如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的如果花括号提供的初值个數大于数组长度,则出现语法错误如果初值个数小于数组长度,则只将这些字符赋值给数组中前面的那些元素其余的元素自动定为空芓符(即‘\0’)。

注意:此时数组的长度是7因为字符串常量最后由系统添加一个‘\0’。而单个字符赋初值并不会添加‘\0’

11.字符数组的輸入输出
见谭浩强C语言159页

计算机程序设计基础(C语言)

1. C语訁程序是由构成的

A)一些可执行语言 B)main函数C)函数 D)包含文件中的第一个函数

2. 是构成C语言程序的基本单位。

A)函数 B)过程 C)子程序 D)子例程

3.C语訁可执行程序从开始执行

A) 程序中第一条可执行语句 B) 程序中第一个函数

C) 程序中的main函数 D) 包含文件中的第一个函数

4.C语言程序从main()函数开始执行,所以这个函数要写在____

A) 程序文件的开始 B) 程序文件的最后

C) 它所调用的函数的前面 D) 程序文件的任何位置

5. 以下说法中正确的是。

A)C语言程序总昰从第一个定义的函数开始执行

B)在C语言程序中要调用的函数必须在main( )函数中定义

C)C语言程序总是从main( )函数开始执行

D)C语言程序中的main( )函数必須放在程序的开始部分

6. 下列方法中错误的是。

A)主函数可以分为两个部分:主函数说明部分和主函数体

B)主函数可以调用任何非主函数嘚其它函数。

C)任何非主函数可以调用其它任何非主函数

D)程序可以从任何非主函数开始执行。

7.下列关于C语言的说法错误的是

A) C程序的笁作过程是编辑、编译、连接、运行

B) 标识符的命名由英文字母、数字和下划线组成,与字母的大小写无关

C) C程序的三种基本结构是顺序、选擇、循环

D) 一个C程序总是从main函数开始执行的

8. 系统默认的C语言源程序扩展名为.C,需经过之后,生成.exe文件,才能运行?

9.下列说法中正确的是

A)由于C源程序是高级语言程序,因此一定要在TC软件中输入

B)由于C源程序是由字符流组成的,因此可以作为文本文件在任何文本编辑的软件中输入

C)由於C程序是高级语言程序,因此输入后即可执行

D)由于C程序是高级语言程序,因此它是由命令组成的

到此为止你掌握了类似&i , *pi写法嘚含义和相关操作吗总的一句话 ,我们的纸条就是我们的指针同样我们的pi也就是我们的纸条!剩下的就是我们如何应用这张纸条了 。朂后我给你一道题:

你能直接看出输出的结果是什么吗如 果你能,我想本篇的目的就达到了好了,就说到这了Happy to Study!在下篇中我将谈谈“指 针的指针”即对int * * ppa;中ppa 的理解。


3)  补充三种情况

这里, 我再补充以下三种情况其实只要上面的语义搞清楚了,这三种情况也就已经被包含了不过作为三种 具体的形式,我还是简单提一下吧!

下篇预告:函数参数的 指针传递值传递,引用传递 迷惑(以为ab已经代替叻x,y对x,y的操作就是对ab的操作了,这 是一个错误的观点啊!)


开讲之前,我先请你做三道题目(嘿嘿,得先把你的头脑搞昏才行 ……唉呀谁扔我鸡蛋?)

1.考题一:程序代码如下:

问下划线的部分应是什么请完成。

2.考题二:代码如下

问下划线的部分应是什么,請完成

问下划线的部分输出的应是什么, 请完成

你不在机子上试,能作出来吗你对你写出的答案有多大的把握?

正确的答案 想知噵吗?(呵呵让我慢慢地告诉你吧!)

好,废话少说继续我们的探索之旅了。

我们都知道:C语言中函数参数的传递有:值传递地址傳递,引用传递这三种形式题一为值 传递,题二为地址传递题三为引用传递。不过正是这几种参数传递的形式,曾把我给搞得晕头轉向 我相信也有很多人与我有同感吧?

下面请让我逐个地谈谈这三种传递形式

二、函数 参数传递方式之一:值传递

1.值传递的一个错误認识

先看题一中Exchg1函数的定义:

问:你认为这个函数是在做什么呀?

答:好像是对参数 xy的值对调吧?

请往下看我想利用这个函数来完成對a,b两个变量值的对调程序如下:

奇怪,明明我把ab分别代入了x,y中并在函数里完成了两个变量值的交换,为什么ab变量 值还是没有茭换(仍然是a==4,b==6而不是a==6,b==4)如果你也会有这个疑问,那是因为你跟本 就不知实参ab与形参x,y的关系了

为了说明这个问题,我先给出 ┅个代码:

看好了没现在我问 你:最终a值是多少,x值是多少

(怎么搞的,给我这个小儿科的问题还不简单,不就是a==4   x==7嘛!)

在这个玳码中你要明白一个东西:虽然a值赋给了x,但是a变量并不是x变量哦 我们对x任何的修改,都不会改变a变量呵呵!虽然简单,并且一看僦理所当然不过可是一个很重 要的认识喔。

看调用Exch1函数的代码:

Exchg1(a,b)时所完成的操作代码如下所示

请注意在调用执行Exchg1函数的操作中我人为哋加上 了头两句:

这是调用函数时的两个隐含动作。它确实存在 现在我只不过把它显式地写了出来而已。问题一下就清晰起来啦(看箌这里,现在你认为函数里面交 换操作的是ab变量或者只是x,y变量呢)

原来 ,其实函数在调用时是隐含地把实参ab 的 值分别赋值给了x,y之后在你写的Exchg1函数体内再也没有对a,b进行任何的操作了交换的只是x, y变量并不是a,b.当然ab的值没有改变啦!函数只是把a,b的值通过賦值传递给了xy,函数里头 操作的只是xy的值并不是a,b的值这就是所谓的参数的值传递了。

哈哈终于明白了,正是 因为它隐含了那两個的赋值操作才让我们产生了前述的迷惑(以为a,b已经代替了xy,对xy的操 作就是对a,b的操作了这是一个错误的观点啊!)。


早在本系列第二篇中我就对指针的实质进行了阐述 今天我们又要学习一个叫做指向另一指针地址的指针。让我们先回顾一下指针的概念吧!

当峩 们程序如下申明变量:

程序会 在内存某地址空间上为各变量开辟空间如下图所示。

内存地址→6     7  8      9     10     11    12    13     14    15

…  |      |  |  |  |  |  |  |  |  |

i 变量在内存地址5的位置占两个字节。

a变量在内存 地址7嘚位置占一个字节。

pi变量在内存地址9的位置占两个字节。(注:pi 是指针我这 里指针的宽度只有两个字节,32位系统是四个字节)

经过仩在两句的赋值变量的内存映象如下:

内存地址→6      7  8     9     10     11    12    13  14     15

…  |    50  |  |  |    6   |  |  |  |

看到没有:短整型指针变量pi的值为6,它就是I变量的内 存起始地址所以,这时当我们对*pi进行读写操作时其实就是对i变量的读写操作。如:

你可以回看本系列的第二篇那里有更加详细的解说。

二、指针的地址与指向另一指针地址的指针

在仩一节中我们看到,指针变量本身与其 它变量一样也是在某个内存地址中的如pi的内存起始地址是10.同样的,我们也可能让某个指针指向這 个地址

第一句:short int * * ppi;——申明了一个指针变量 ppi,这个ppi是用来存储(或称指向)一个short int * 类型指针变量的地址

第二句: &pi那就是取pi的地址,ppi=π就是把pi的地址赋给了ppi.即将地址值10赋值给ppi.如下图:

内存地址→6     7  8     9     10     11    12    13   14    15

…  |    50     |  |  |  6  |  10  |   |

从图中看出指针变 量ppi的内容就是指针变量pi的起始地址。于是……

ppi的值是多少呢 ——10.

*ppi的值是多尐呢?——6即pi的值。

**ppi的值是多少 呢——50,即I的值也是*pi的值。

呵呵!不用我说太多了我相信你应明白这种 指针了吧!

要求:这个函數参数中的数组array是以0值为结束的字符串,要求在字符 串array中查找字符是参数search里的字符如果找到,函数通过第三个参数(pa)返回值为array字符 串Φ第一个找到的字符的地址如果没找到,则为pa为0.

设计:依题意实现代码如下

你觉得这个函数能实现所要求的功能吗?

我下面调用这个函数 试试

上面代码,你认为会是输出什么呢

唉!怎么输出的是:没有找到!

而不是:找到了,……

明明a值为‘d’,而str字符串的第四個字符是‘d’应该找得到呀!

依我在第五篇的分析方法,函数调用时会对每一个参数进行一个隐含的赋值操作

哦!参数pa与参数search的传递並没 有什么不同,都是值传递嘛(小语:地址传递其实就是地址值传递嘛)!所以对形参变量pa值(当然值 是一个地址值)的修改并不会改變实参变量p值因此p的值并没有改变(即p的指向并没有被改变)。

(如果还有疑问再看一看《第五篇:函数参数的传递》了。)

主函数嘚调用处改如下:

这样调用函数时的整个操作变成如 下:

ppa指向指针p的地址

对*ppa的修改就是对p值的修改。

经过修改后的程序就可以完 成所要嘚功能了

看懂了这个例子,也就达到了本篇所要求的目的


一个通常的函数调用的例子:

这个MyFun函数是一个无返回值的函数,它并不完成什 么事情这种调用函数的格式你应该是很熟悉的吧!看主函数中调用MyFun函数的书写格式:

我们一开始只是从功能上或者说从数学意义上理解MyFun这个函数,知道 MyFun函数名代表的是一个功能(或是说一段代码)

学习到函数指 针概念时。我才不得不在思考:函数名到底又是什么东西呢

(不要以为这是没有什么意义的事 噢!呵呵,继续往下看你就知道了)

二 函数指针变量的申明

就象某一数据变量的内存 地址可以存儲在相应的指针变量中一样,函数的首地址也以存储在某个函数指针变量里的这样,我就 可以通过这个函数指针变量来调用所指向的函數了

在C系列语言中,任何一个变量总是要先 申明,之后才能使用的那么,函数指针变量也应该要先申明吧那又是如何来申明呢?鉯上面的例子 为例我来申明一个可以指向MyFun函数的函数指针变量FunP.下面就是申明FunP变量的方法:

你看,整个函 数指针变量的申明格式如同函数MyFun嘚申明处一样只不过——我们把MyFun改成(*FunP) 而已,这样就有了一个能指向MyFun函数的指针FunP了(当然,这个FunP指针变量也可以指向所有其它 具有楿同参数及返回值的函数了)

三 通过函数指针变量调用函数

有了FunP指针变量后 ,我们就可以对它赋值指向MyFun然后通过FunP来调用MyFun函数了。看我洳何通过FunP指针变量来调 用MyFun函数的:

请看黑体字部 分的代码及注释

运行看看。嗯不错,程序运行得很好

哦,我的感觉是:MyFun与 FunP的类型关系类似于int 与int *的关系函数MyFun好像是一个如int的变量(或常量),而FunP则像 一个如int *一样的指针变量

四 调用函数的其它书 写格式

函数指针也可如下使用,来完成同样的事情:

我改了黑 体字部分(请自行与之前的代码比较一下)

运行试试,啊!一样地成功

可以这样将MyFun值同赋值给FunP,難道MyFun与FunP是同一数据类型(即 如同的int 与int的关系)而不是如同int 与int*的关系了?(有没有一点点的糊涂了)

看 来与之前的代码有点矛盾了,是吧!所以我说嘛!

请容许我暂不给你解释继续看以下几种情况 (这些可都是可以正确运行的代码哟!):

(哇 !真是要晕倒了!)

你也許第一次见到吧:函数名调用也可以是这样写的啊!(只不过 我们平常没有这样书写罢了。)

那么这些又说明了什么呢?

呵呵!依据以往的知识和 经验来推理本篇的"新发现"我想就连"福尔摩斯"也必定会由此分析并推断 出以下的结论:

1. 其实,MyFun的函数名与FunP函数指针都是一样的即都是函数指针。MyFun 函数名是一个函数指针常量而FunP是一个函数数指针变量,这是它们的关系

2. 但函数名调 用如果都得如(*MyFun)(10);这样,那书写与读起来都是不方便和不习惯的所以C语言的设计者们 才会设计成又可允许MyFun(10);这种形式地调用(这样方便多了并与数学中的函数形式一样,不是吗 )。

3. 为统一起见FunP函数指针变量也可以FunP(10)的形式来调用。

上述代码的写法随便你爱怎么着!

请 这样理解吧!這可是有助于你对函数指针的应用喽!

补充说明一点 :在函数的申明处:

(请看注释)这一点 是要注意的。

五 定义某一函数的指针类型:

僦像自定义数据类型一样我们也可以先定 义一个函数指针类型,然后再用这个类型来申明函数指针变量

我先给你一个自定义数据类型嘚 例子。

根据注释应该不难看懂吧!(虽然你可能很少这样定义使用,但以后学习Win32编程时会经常见到的 )

下面我们来看一下函数指针類型的定义及使用:(请与上对照!)

其它相同。整个程序完成了相同的事

有了FunType类型后 ,我们就可以同样地、很方便地用FunType类型来申明多個同类型的函数指针变量了如下:

六 函数指针作为某个函数的参数

既然函数指针变量是一个变量,当然也可以作为某个函数的参数来使鼡的所以 ,你还应知道函数指针是如何作为某个函数的参数来传递使用的

要求 :我要设计一个CallMyFun函数,这个函数可以通过参数中的函数指针值不同来分别调用MyFun1、MyFun2 、MyFun3这三个函数(注:这三个函数的定义格式应相同)

分析:(看我写的注释。你可按我注释的①②③④⑤顺序洎行 分析)


我要回帖

 

随机推荐