我有这两个指针,amen和ptr,其中我分配给amen的所有值也将分配给 ptr。
ptr和amen可以是别名吗?
void func(const char *ptr)
{
struct samp *test;
DIR *dp;
char *amen;
if(ptr[0]=='c'||ptr[0]=='C')
strcpy(amen,"c_amen.txt");
else if()
......
else
...
}
因此,如果func被称为func("C");,ptr将具有与amen<相同的值/strong> 紧接在第 4 行之后。
另外,const 的用途是什么?不应该是为了保护ptr不被func内部改变吗?
最佳答案
目前您无法对该行为做出任何假设,因为以下几行是不正确的:
char *amen;
// ...
strcpy(amen,"c_amen.txt");
您正在向 strcpy
传递一个未初始化的指针,因此您需要修复该问题(它期望目标指针有效且具有适当的大小来保存复制的字符串)。
修复后,是的,amen
将指向具有相同内容的字符串。当然,函数调用退出后就会被清理掉,所以用处不大。您需要传入字符串的大小或在 ptr
上调用 strlen
来确定要分配多大的缓冲区。
const
意味着您无法更改指针指向的内容,即数据是只读的。指针本身不是 const。
关于c - 这两个指针别名如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9590898/