在K&R书籍第104页,我发现了这句话:
Run Code Online (Sandbox Code Playgroud)char amessage[] = "now is the time"; //an array char *pmessage = "now is the time"; //a pointer可以更改阵列中的各个字符,但
amessage始终引用相同的存储.pmessage随后可以将指针修改为指向其他位置,但如果您尝试修改字符串内容,结果将是未定义的...
那么,这是他们在两种情况下的错误吗?
对于阵列,
amessage[] = "allocate to another address"; //wrong?
Run Code Online (Sandbox Code Playgroud)
对于指针,
pmessage[0] = 'n'; //wrong?
Run Code Online (Sandbox Code Playgroud)
我只是想知道什么时候违反这些规则.
谢谢.
我正在使用这个SO问题作为需要反转字符串的程序的一部分.我遇到的问题是我似乎无法使功能发挥作用.这是我的代码:
int main(int argc, char *argv[]){
char *test = "Testing";
fputs(test, stdout);
fputs(reverse_string(test), stdout);
}
char* reverse_string(char *str){
char temp;
size_t len = strlen(str) - 1;
size_t i;
size_t k = len;
for(i = 0; i < (len +1)/2; i++){
temp = str[k];
str[k] = str[i];
str[i] = temp;
k--;
}
return str;
}
Run Code Online (Sandbox Code Playgroud)
我收到了一个错误 conflicting types for 'reverse_string'
编辑:对于任何想知道这里的人来说,代码是有效的.请参阅@ chux的答案以获得解释.
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char* reverse_string(char *str){
char temp;
size_t len = strlen(str) - 1; …Run Code Online (Sandbox Code Playgroud)