函数
1.下面程序期望输出str = hello world,请指出其中的错误:
char* GetStr(char *p)
{
p = "hello world";
return p;
}
void main(void)
{
char *str = NULL;
if (NULL != GetStr(str))
{
printf("\r\n str = %s",str);
}
return;
}
答案:无法返回字符串,参数使用错误。str还是null,值不会改变
2.此函数实现把32位IP地址(主机序)以字符串的方式打印出来,找出代码中的错误
char* IpAddr2Str(unsigned long ulIpAddr)
{
char szIpAppr[32];
(void)VOS_sprintf(szIpAppr, "%d.%d.%d.%d", ulIpAddr>>24
, (ulIpAddr>>16) & 0xff, (ulIpAddr>>8) & 0xff, ulIpAddr & 0xff);
return szIpAppr;
}
答案:函数的局部变量是存放在堆栈中的,此函数返回了堆栈中的地址,函数退出后堆栈中的
3.指出错误:
#define OK 0;
#define ERR 1;
#define ERROR (-1);
#define BUFFER_SIZE 256;
char* Get