习题8_6
这个是我最开始的错误代码:
void delchar( char *str, char c )
{
char* p;p=str;char* tool;
while(p!='\0')
{
if(c==*p)
{
tool=p;
while(tool!='\0')
{
*tool=*(tool+1);
tool++;
}
}
else
p++;
}
}
原因在于:我的需要比较指针的值的话需要*,在运用指针的时候一定要注意。
以下是正确代码:
void delchar( char *str, char c )
{
char* p;p=str;char* tool;
while(*p!='\0')
{
if(c==*p)
{
tool=p;
while(*tool!='\0')
{
*tool=*(tool+1);
tool++;
}
}
else
p++;
}
}
下面是习题9_2:
我开始完成的代码是:
struct complex multiply(struct complex x, struct complex y)
{
struct complex put;
put->real=x->real*y->real-x->imag*y.imag;
put->imag=x->real*y->imag+x->imag*y.real;
return put;
}
发现代码无法编译,但在我将 . 改为->之后却可以了,即:
struct complex multiply(struct complex x, struct complex y)
{
struct complex put;
put.real=x.real*y.real-x.imag*y.imag;
put.imag=x.real*y.imag+x.imag*y.real;
return put;
}
在查阅资料后发现,. 用于结构体变量,而**->**用于结构体指针。