2015-04-04 174 views
0

我有点困惑,所以我会先解释我的理解,希望有人能纠正我,并解释我出错的地方。在C中,参数是通过值传递的,所以如果我们想要从传入的函数内改变指针,我们必须将参数定义为指针指针,以便我们可以修改实际的指针比价值。如果这是正确的,是否有人可以解释sprintf()函数如何设法更改* str指针?指针vs指针指针C

+2

A “双指针” 包含双的地址。指向指针的指针包含指针的地址。 – 2015-04-04 02:59:24

+0

谢谢,纠正:-) – CaseyJones 2015-04-04 03:34:48

回答

4

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

实施例:

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

请您详细说明一下吗?谢谢:) – CaseyJones 2015-04-04 02:05:10

+0

如果* str指针改变了,那么* str指针会指向不同的地方。它仍然指向相同的位置,只是该位置的数据发生了变化。例如,指针就像一个房子的地址,数据就像房子里的人。 sprintf就像是替换房子里的人。 – 2015-04-04 02:06:42