《C和指针》(7)函数

问题

  1. 具有空函数体的函数可以作为存根使用。你如何对这类函数进行修改,使其更加有用?

    :当存根函数被调用时,打印一条消息,显示它已被调用,或者也可以打印作为参数传递给它的值。

  2. .如果在一个函数的声明中,它的返回值类型为A,但它的函数体内有一条return语句,返回了一个类型为B的表达式。请问,这将导致什么后果?

    :如果在一个函数的声明中,它的返回值类型为A,但它的函数体内有一条return语句,返回了一个类型为B的表达式。请问,这将导致什么后果?

  3. 如果一个函数声明的返回类型为void,但它的函数体内包含了一条retum语句,返回了一个表达式。请问,这将导致什么后果?

    :这是不允许的;编译器应该给出一条错误消息

  4. 如果一个函数被调用之前,编译器无法看到它的原型,那么当这个函数返回一个不是整型的值时,会发生什么情况?
    :返回的值被解释为一个整数。

  5. 如果一个函数被调用之前,编译器无法看到它的原型,如果当这个函数被调用时,实际传递给它的参数与它的形式参数不匹配,会发生什么情况?
    :参数值被解释为形式参数的类型,而不是它们的实际类型。

  6. 下面的函数有没有错误?如果有,错在哪里?
    《C和指针》(7)函数_第1张图片
    : 这个函数假定当它被调用时传递给它的正好是10个元素的数组。如果参数数组更大一些,它就会忽略剩余的元素。如果传递一个不足10个元素的数组,函数将访问数组边界之外的值。

  7. .递归和while循环之间是如何相似的?
    :递归和迭代都必须设置一些目标,当达到这些目标时便终止执行。每个递归调用和循环的每次迭代必须取得一些进展,进一步靠近这些目标

  8. 请解释把函数原型单独放在#include文件中的优点。

    a.在多个源文件中使用#include比复制原型更容易。
    b.原型本身只有一个副本。
    c.#在定义函数的文件中包含原型可以确保它们匹配。

你可能感兴趣的:(《C和指针》,c语言,开发语言)