我的问题是关于交换字符指针算法的效率。
为什么任何一条注释行都会导致我的编译器抛出错误?
相同的逻辑适用于将 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;
}
最佳答案
修改字符串文字会导致未定义的行为。 它可能会导致崩溃。 字符串文字是只读的,因此无法修改。
所以
*b = *a;
是一个错误。
如果你想修改你的字符串,那么他们应该有读写权限。 所以
char a[10] = "name1";
char b[10] = "name2";
然后你就可以拥有
*b = *a; /* In your sawp() function */
关于c - 寻找有效的交换字符指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27407913/