这里我们有 3 个字符串:
char a1[ ] = "abc"; // static
char a2[4] = "abc"; // static
char* a3 = "abc"; // dynamic
测试功能仅作为示例
int test(char* v)
{
return (*v = '1')
}
让我们在 main 和结果中进行测试
int main()
{
int n;
n = test(a1); // OK//
// if not '1' use malloc else leave it
n = test(a2); // OK
// if not '1' use malloc else leave it
n = test(a3); // const Error
// if not '1' use malloc else leave it
}
如何测试/检查a3指针?所以你可以采取类似 malloc(); 的操作;因为它不可编辑,所以我们需要新的指针。
最佳答案
崩溃的原因不是 a3
是一个指针。它指向的内存是编译到程序中的常量,因此无法更改。
没有标准化的方法来测试情况是否如此。提供一个需要运行时开销但许多程序员不会使用的功能是违反 C 哲学的。
因此,如果您需要的话,您有责任跟踪这一点。
您可能会看到的一件事是使用安全检查器,例如 splint ,据我了解,它会扫描您的代码以查找此类潜在问题。
关于c - 如何检查/测试字符串是静态还是动态并且可以编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22647673/