无法从函数堆栈中获取输入的字符串

时间:2017-09-14 07:35:22

标签: c pass-by-value function-call

#include <stdio.h>

#include <stdlib.h>

static void get_string(char *ac)
{
    ac = (char *)malloc (1 * sizeof (char));
    printf("Enter the string to count vowels and consonants in a string using pointers: ");
    scanf("%s", ac);
}

main(int argc, char *argv[])
{
    char *ac = NULL;
    get_string(ac);
    printf("The Entered string is:%s", ac);
    for(;;);
}

无法从函数堆栈中获取输入的字符串。返回null。任何人都可以帮我调试吗?

1 个答案:

答案 0 :(得分:1)

C中的函数参数按值传递。从被调用函数内部对参数所做的任何更改都不会反映到函数调用时提供的实际参数。

在您的情况下,您想要更改ac本身(而不是它指向的内存位置的内容),因此,这需要指针指向 - {{1 }}

那就是说,