在C中,可以在声明中使用字符串文字,如下所示:
char s[] = "hello";
或者像这样:
char *s = "hello";
那么区别是什么呢?我想知道在编译和运行时的存储持续时间实际发生了什么.
我对字符串文字的分配/存储感兴趣.
我确实在这里找到了一个有趣的答案,说:
定义内联字符串实际上是将数据嵌入程序本身并且无法更改(某些编译器通过智能技巧允许这样做,不要打扰).
但是,它与C++有关,更不用说它不打扰了.
我很烦.= d
所以我的问题是我的字符串文字保存在哪里以及如何保存?我为什么不试着改变呢?实施是否因平台而异?有没有人愿意详细说明"聪明的伎俩"?
我可以在不同的函数中访问局部变量吗?如果是这样,怎么样?
void replaceNumberAndPrint(int array[3]) {
    printf("%i\n", array[1]);
    printf("%i\n", array[1]);
}
int * getArray() {
    int myArray[3] = {4, 65, 23};
    return myArray;
}
int main() {
    replaceNumberAndPrint(getArray());
}
上面一段代码的输出:
65
4202656
我究竟做错了什么?"4202656"是什么意思?
我是否必须在replaceNumberAndPrint()函数中复制整个数组才能比第一次更多地访问它?