怎么了?为什么指针保持不变?

时间:2018-04-04 12:50:59

标签: c

我学习了一段时间的C编程,我不得不创建一个程序,其中包含一个函数void hello()显示单词'Hello :)'和数字,调用函数hello()的时间。下面的代码显示'Hello',但函数调用的数量保持不变。我只是想知道,出了什么问题以及它为什么不能正常工作。

#include <stdio.h>

int main(void) {

void hello(int *p_number);
int number = 1, i;
int* p_number = number;

for (i = 1; i <= 10; i++){
    hello(&p_number);
    printf("Number in cyclus = %d\n", number);
    number++;
}

return 0;
}

void hello(int *p_number){
    printf("number of calling = %d, Hello :)\n", *p_number);
}

2 个答案:

答案 0 :(得分:2)

你需要

int* p_number = &number;

hello(p_number);

在主叫站点。

即。将p_number设置为number地址。并打开编译上的警告级别并阅读它们!在hello中维护指针有相当多的冗余;大概这是锻炼吗?

答案 1 :(得分:0)

#include <stdio.h>
void hello(int *p_number);

int main(void) {

    int number = 1, i;
    int *p_number = &number;

    for (i = 1; i <= 10; i++) {
        hello(p_number);
        printf("Number in cyclus = %d\n", number);
        number++;
    }

    return 0;
}

void hello(int *p_number) {
    printf("number of calling = %d, Hello :)\n", *p_number);
}

将指针设置为指向数字地址,将指针地址传递给函数。