首页 > 解决方案 > 如何返回字符指针?

问题描述

我是 C 新手。我正在尝试返回一个字符指针>>指向单个字符值的指针。我知道我可以简单地返回一个字符,但我想学习如何返回一个指向单个字符值的字符指针。

char * returnPointerToCharacter(){
    char s = 's';
    char * pointerToS = &s;
    return pointerToS;
}

int main()
{
//         This code below works  
    char h = 'h';
    char * pointerToH = &h;
    printf("%c \n", *pointerToH);

//         This code below doesn't work                
    char * pointerToS = returnPointerToCharacter();
    printf("%c \n", *pointerToS);

    return 0;
}

标签: cpointerscharacter

解决方案


问题是 char s 在堆栈上,并从堆栈中弹出,所以你返回一个指向被破坏元素的指针。

如果您只想要一个返回 char 指针的函数,您可以尝试一些简单的方法:

char * returnPointerToCharacter(char *s){
    return s;
}
...// Do stuff
char f;
char * pointerToS = returnPointerToCharacter(&f);

推荐阅读