c - C中的指针与指向指针的指针

标签 c pointers

我有点困惑,所以我先解释一下我的理解,希望有人能纠正我并解释我哪里出错了。在 C 中,参数是按值传递的,所以如果我们想在传递给它的函数中更改指针,我们必须将参数定义为指向指针的指针,这样我们就可以修改实际的指针而不是比值。如果这是正确的,有人可以解释 sprintf() 函数是如何改变 *str 指针的吗?

最佳答案

sprintf 函数不会更改*str 指针,它会更改*str 指针指向的数据。

例子:

char *str = malloc(20);
sprintf(str, "hello %s", "world");
// str has not changed, only the data it points to has

关于c - C中的指针与指向指针的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29441939/

相关文章:

与指针程序的混淆(c编程)

c - 如何打印数组头部的内容并删除

C内存分配有什么问题吗?

c - 如何反转这个 for 循环的打印?

c - Ada 中的无约束数组可以安全使用吗?

无法使用指针为结构创建动态数组

python - 如何基于 1 在一组段上分配值

c++ - 如何知道何时释放内存?

根据 C 中的条件更改指针(星号 1.4 cdr 结构)

c - 使用指针反转字符串