更改指针的值

时间:2017-05-17 21:32:40

标签: c pointers

我刚开始学习C语言,我有一个基本的问题。

#include <stdio.h>

int main() {
    // These variables have been assigned hidden values:
    int secret;
    int *another_secret;

    // Declare a variable named secret_pt and make it point to secret:

    // Add the value at the address pointed to by another_secret to the
    // value at the address pointed to by secret_pt.
    // Do not change the address assigned to secret_pt, and don't explicitly set secret.

    return 0;
}

这是我的方法;

#include <stdio.h>

int main() {
    // These variables have been assigned hidden values:
    int secret;
    int *another_secret;

    // Declare a variable named secret_pt and make it point to secret:

     //  int *secret_pt;
    //secret_pt = &secret;
    int *secret_pt = &secret;

    // Add the value at the address pointed to by another_secret to the
    // value at the address pointed to by secret_pt.
    // Do not change the address assigned to secret_pt, and don't explicitly set secret.

    int *secret = *another_secret;

    return 0;
}

但我正在重新定义错误,这是有道理的,但我不知道如何解决它。

2 个答案:

答案 0 :(得分:0)

您将获得两个地址,secret_ptanother_secret。系统会要求您将其内容添加到一起,并将结果存储到secret_pt个点中。这恰好是secret,但您不应该直接分配给它。

通过使用*运算符解除引用,可以访问指针的内容。因此secret_pt地址的值为*secret_pt,同样地址another_secret的值为*another_secret。您可以将它们一起添加。

请注意,*secret_pt只是secret,您可以使用该事实存储到secret而不使用名称secret

答案 1 :(得分:0)

欢迎使用ODR,欢迎使用pointers

  

一条基本的C ++规则,规定没有翻译单位   包含任何变量,函数,类的多个定义   类型,枚举类型或模板,每个程序都应该   包含每个非内联函数的一个定义或   变量。一些定义可能在多个翻译中重复   单位,受严格规定的约束。

ISO / IEC 14882-2014。编程语言 - C ++,第四版。 2014。