相关疑难解决方法(0)

字符串文字是常量吗?

如果我将一个字符串文字分配给a char*,即使使用了许多迂腐选项(-Wall -W -pedantic -std=c99),GCC和Clang都不会抱怨:

char *foo = "bar";
Run Code Online (Sandbox Code Playgroud)

而他们(当然)不要抱怨,如果我分配const char*char*.

这是否意味着字符串文字被认为是char*类型?他们不应该const char*吗?如果它们被修改,它就不是定义的行为!

和(一个不相关的问题)命令行参数(即:):argv它被认为是一个字符串文字数组?

c string const constants literals

22
推荐指数
4
解决办法
7166
查看次数

在c中反转一个字符串

我试图扭转一个字符串到位.

void reverseStr(char *str)
{
 int i;
 int length;
 int last_pos;
 length = strlen(str);
 last_pos = length-1;

 for(i = 0; i < length / 2; i++)
 {
   char tmp = str[i];
   str[i] = str[last_pos - i];
   str[last_pos - i] = tmp;
 }
}

Program received signal SIGSEGV, Segmentation fault.
0x0000000000400893 in reverseStr (str=0x400974 "Haus") at main.c:102
102         str[i] = str[last_pos - i];
(gdb) print i
$1 = 0
(gdb) print last_pos
$2 = 3
(gdb) print str
$3 = 0x400974 …
Run Code Online (Sandbox Code Playgroud)

c string reverse

1
推荐指数
1
解决办法
4906
查看次数

标签 统计

c ×2

string ×2

const ×1

constants ×1

literals ×1

reverse ×1