我有两个指针, 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 更改?
答案 0 :(得分:1)
目前您无法对行为做出任何假设,因为以下行不正确:
char *amen;
// ...
strcpy(amen,"c_amen.txt");
您正在将未初始化的指针传递给strcpy
,因此您需要修复它(它希望目标指针有效并且具有适当的大小来保存复制的字符串)。
在修复之后,是的,amen
将指向具有相同内容的字符串。当然,它会在函数调用退出后被清理,所以不是很有用。您需要传入字符串的大小或在strlen
上调用ptr
来确定要分配的缓冲区大小。
const
意味着您无法更改指针指向的内容,即数据是只读的。指针本身不是const。