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 *));