第六章函数复习题

1

声明 定义 调用

2

a

void igor();

b

float tofu(int);

c

double mpg(double ,dounble );

d

long summation(long ch[], int n);

e

double ofcourse(const string);

3

void set(int ch[], int len, int n)
{
    for (int i = 0; i < len; ++i)
        ch[i] = n;
}

4

void set(int *p1, int *p2, int n)
{
    int *p;
    for (int p = p1; p <= p2; ++p)
        *p = n;
}

5

double maximum(const double ch[], int n)
{
    double max = ch[0];
    for (int i =1; i < n; ++i)
        if (ch[i] > max)
            max = ch[i];
    return max;
}

6

因为函数在调用参数时,使用的是一个副本,而不是原来的数,因此不会修改作为实参的基本类型的值。而指针不同,指针为函数参数时,可以通过修改直着,来修改指针所指向的值。

7

字符串可以被储存在char数组中,可以使用带双引号的字符串来表示(比如"abc",但这种无法被修改),也可以用指向字符串第一个字符的指针来表示。

8

void replace(char *str, char c1, char c2)
{
    for (int i = 0; i < strlen(str); ++i)
        if (str[i] == c1)
        str[i] = c2;
}

9

"pizza"的含义是:"pizza"是一个常量字符串,其名字表示为指向其地址的指针(类型为char),对这个指针解除运算,是字符串的第一个字符——即p。*"pizze"的结果是:p

“taco”[2]的含义是:原理同上,这个常量字符串的第三个字符——是c。

10

按值传递则是传递他的类型,然后glitz作为参数进行传递。按地址传递则是参数使用结构指针。

按值传递的好处是不会修改原结构变量,按地址传递的好处正好是可以在函数内修改原结构变量。

假如结构类型是abc,则声明结构是abc glitz;

按值传递函数原型假如为:void mmm(abc);

按地址传递函数原型假如为:void mmm(abc*);

glitz作为参数时,按值是glitz,按地址则为&glitz。

补充:按值传递将自动保护原始数据,但这是以时间和内存为代价的(因为要复制副本),按地址传递可节省内存和时间,但不能保护原始数据,解决办法是使用const限定符。

11

int judge(int (*pf)(const char *));
发布了42 篇原创文章 · 获赞 1 · 访问量 1596

猜你喜欢

转载自blog.csdn.net/qq_32631105/article/details/104197503