可能重复:
通过指针更改C中的字符串文字?
这是一个代码示例
void main()
{
char *i="prady"; printf("%c ",++*i);
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我为什么这个代码在gcc中给出了一个分段错误,我猜它应该给'q'.当我只使用*i++它给我结果但是预先增量只是它给我一个分段错误.
还告诉我为什么void main不是写main()函数的正确方法.
++*i手段++(*i).您正在尝试修改字符串文字的第一个字符,这是不允许的.就C标准而言,行为是未定义的,但是这种实现有助于隔离以提醒您该问题.
*i++手段*(i++).你正在修改你的指针i,这很好.
void main()不是编写main函数的正确方法,因为标准表示main返回int.返回值用于指示程序的成功或失败.实现可以支持其他形式main,但有两个是必需的:int main(void)和int main(int argc, char *argv[]).