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

标签 c pointers constants alias

我有这两个指针,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/

相关文章:

c++ - C++ 中带有 typedef 和模板的常量引用

c++ - 如何避免到处链接某个目标文件

Java构建时间常数配置

c - 如何从 GTK 旋转按钮中检索 float 形式的输入值?

C++11 智能指针语义

c++ - 错误 : Display duplicated results via pointer

pointers - Rust 中 &4 等文字引用的所有者是什么?

c++ - 如果绝对或相对误差小于 10^(−6),您的答案将被视为正确

c - typedef'ng 指针和 const

c - printf() 和 float 错误