gpt4 book ai didi

c - 这两个指针别名如何?

转载 作者:行者123 更新时间:2023-11-30 15:58:41 25 4
gpt4 key购买 nike

我有这两个指针,amenptr,其中我分配给amen的所有值也将分配给 ptr

ptramen可以是别名吗?

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com