第8章函数十个问题
来源:互联网 发布:平板电脑网络转换器 编辑:程序博客网 时间:2024/06/16 09:01
1. 函数调用中,地址传递为什么说形参与实参占用同样的存储单元?
因为实参传的是那段地址,形参接受的也是这段地址,相同的地址,当然就是相同的存储单元,存储单元就是地址的意思
2. 如果C++程序要调用已编译后的C函数,该怎么办?
假如一个C函数的声明如下
void foo(int x,int y);
该函数被C编译器编译后再库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字来支持重载和类型安全连接,由于编译后的名字不同,C++程序不能直接调用C函数。C++提供了一个C连接交换指定符号extern“C”来解决这个问题
3. main()的返回值返回到那里?
返回给操作系统,表示程序正常退出。因为return语句通常写在程序的最后,不管返回什么值,只要到达这一步,说明程序已经运行完毕。而return的作用不仅在于返回一个值,还在于结束函数
4. 为什么有的编译器不支持void main()?
有些编译器允许这种形式,但是还没有任何标准考虑接受它。标准的C语言要求main函数的返回值是int,该值是执行程序时,告知主调进程程序运行结果的一个渠道。由于大多数时候,程序运行结果可以由其它方式确定,比如程序打印信息,所以main的返回值变得不重要,于是大部分编译器都支持无返回值类型的main,这时默认返回给主调进程0值
5. 二维数组如何作为函数参数使用?
二维数组作形参有三种形式:
void func(int mat[][4]);传递一个二维数组,其中第二维的大小不能省略;
void func(int(*p)[4]);这里定义一个指针p,这个指针p指向的是一个数组,这个数组的长度是4,也可以这么理解,p指向的是二维数组中的每一行
void func(int **p);定义一个指针的指针,使用这种形式要注意一些问题,就是在计算每行元素的首地址时,以及具体某个元素位置的地址时候,需要进行强制类型转换才行
6. 怎样让函数返回数组?
C++中函数是不能直接返回一个数组的,但是数组就是指针,所以可以让函数返回指针来实现。不能直接返回函数中定义的数组,会被释放掉。
7. 回调函数有哪些具体应用?
使用回调函数实际上就是在调用某个函数时,将自己的一个函数(这个函数为回调函数)
的地址作为参数传递给那个函数。而那个函数在需要的时候,利用传递的地址调用回调函数。
8. 有哪些变参函数?
典型的可变参数函数的例子有printf(),scanf()等
9. 变参函数如何取参数?
C语言支持可变参数函数,即参数的个数可以是不定个,在函数定义的时候用(...)表示,比如我们常用的printf()等;printf函数的原型如下:
int printf(const char *format,...);
注意,采用这种形式定义的可变参数函数,至少需要一个普通的形参,比如上面代码中的*format,后面的省略号是函数原型的一部分。
10. 函数声明放在主函数外和主函数内有什么区别?
放在主函数外,从它的位置往下,所有的函数都能调用该函数;
而在主函数内,只有主函数能访问该函数
- 第8章函数十个问题
- 第八章函数十个问题及解答
- 第5章数组与指针十个问题
- Linux C 编程第13章进程间通信方式 十个问题及解答(1)
- Linux C编程 第13章进程间通信方式十个问题及解答(2)
- 第二章数据类型十个问题
- 第四章语句十个问题
- 第三章运算符,表达式十个问题
- 第四章语句十个问题及解答
- 函数十个问答
- 第8章 函数探幽
- 第8章 函数探索
- 第8章 分析函数
- 十个iOS面试问题
- 十个iOS面试问题
- 十个iOS面试问题
- 十个iOS面试问题
- 十个iOS面试问题
- [APP开发技巧] AC小课堂:服务器上的页面执行API
- python3.5安装numpy
- dubbo+zookeeper+spring+springMVC+mybatis
- 路由协议基础
- 延长启动图,并在重新登录操作完成后显示广告页,进入主程序界面等。
- 第8章函数十个问题
- python selenium 定位iframe(多层框架)
- C#时间计算DateTime
- eclipse 安装 JRebel插件
- VSCode插件wandbox实用教程
- centOs ubuntu debian
- C#知识总结一
- Python新式类和经典类的区别
- android不同的定制系统的机型适配和不同版本系统api sdk的适配