【发布时间】:2014-12-10 18:07:05
【问题描述】:
我的问题是关于交换字符指针算法的效率。
为什么任何一个注释行都会导致我的编译器抛出错误?
同样的逻辑适用于将 b 与 temp 交换,但同样的逻辑在对 temp 和 a 重复相同的函数时会导致错误?
谢谢大家。
#include <iostream>
void sawp ( char *a, char *b, int l)
{
char * prtA = a;
char * prtB = b;
char *temp = (char *)calloc(l, sizeof(char));
while(*(char*)b)
{
*(char*)temp= *(char*)b;
// *(char*)b = *(char*)a;
// *(char*)a = *(char*)temp;
std::cout<<*(char*)temp<<std::endl;
b++;
temp++;
a++;
}
}
int main()
{
char *a="Name";
char *b="Lastname";
sawp (a,b,sizeof(b));
return 0;
}
【问题讨论】:
-
旁注#1:那些
(char*)铸件是完全多余的——您将char*铸件到char*。旁注#2:您将swap拼错为sawp。旁注#3:你没有对prtA和prtB做任何事情。旁注#4:您将“编译器”拼错为“编译器”。所有这些附注只是为了告诉您,在此处发布问题之前您应该付出一点努力(也就是说,如果您希望其他人努力回答它)。重要说明 #1:“抛出错误”的不是编译器,因为它不是编译错误——它是运行时错误!!!