1:指针问题:
错误代码:
//A.cpp
T gTemp;
void GetA(T *p)
{
p = &gTemp;
}
//B.cpp
T iInfo;
GetA(&iInfo);
或者
T *piInfo;
GetA(piInfo);
正确的是
//A.cpp
T gTemp;
T* GetA()
{
return &gTemp;
}
//B.cpp
T *piInfo = GetA();
解决方案:
<<你必须知道的495个C语言问题>>5.
4 我有个函数,它应该接受并初始化一个指针 void f(int *ip) { static int dummy = 5; ip = &dummy;} 但是当我如下调用时: int *ip; f(ip); 调用者的指针却没有任何变化。 你确定函数初始化的是你希望它初始化的东西吗?请记住在 C 中, 参数是通过值传递的。被调函数仅仅修改了传入的指针副本。你需要传入指针的地址 (函数变成接受指针的指针), 或者让函数返回指针。
同理下面也是错误的
void Swap(T* rht, T* lht)
{
T *pTemp = rht;
rht = lht;
lht = pTemp;
}
2: 计算算法时间问题
start = beginTime();
for (int i = 0; i < 100; ++ i)
for (int j = 0; j < 1000; ++ j)
{
//转化函数: A...... //算法
B.......
}
End = beginTime();
错误地方:A....花费2毫秒
结果测试出现很大问题:
A....花费两毫秒
100*1000*2 = 200s = 3.3分钟
修改方案:
//转化函数: A......
放在外面进行转化
start = beginTime();
for (int j = 0; j < 1000; ++ j)
{
//转化函数: A...... }
for (int i = 0; i < 100; ++ i)
for (int j = 0; j < 1000; ++ j)
{
//算法
B.......
}
End = beginTime();
3: Hash 算法
4:for(u_short i = 100; i >= 0; --i)
修改:
for (u_short i = 100; i > 0; --i)
for(int i = 100; i >= 0; --i)
5:读写文件, 发送消息,最好定义一个头,那样
容易知道读取的是什么,读取的是否错误
// 消息头
struct TMSG_HEADER
{
char cMsgID; // 消息标识
TMSG_HEADER(char MsgID = INVALID_MSG)
: cMsgID(MsgID)
{
}
};
// 请求传送的文件名
// 客户端传给服务器端的是全路径名称
// 服务器传回给客户端的是文件名
struct TMSG_FILENAME : public TMSG_HEADER
{
char szFileName[256]; // 保存文件名的字符数组
TMSG_FILENAME()
: TMSG_HEADER(MSG_FILENAME)
{
}
};
// 传送文件长度
struct TMSG_FILELENGTH : public TMSG_HEADER
{
long lLength;
TMSG_FILELENGTH(long length)
: TMSG_HEADER(MSG_FILELENGTH), lLength(length)
{
}
};
累了,以后再写吧,↖(^ω^)↗