更新函数中的指针

前端之家收集整理的这篇文章主要介绍了更新函数中的指针前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在向指针传递一个更新它的函数.但是当函数返回指针时,它返回到函数调用之前的值.

这是我的代码

#include <stdio.h>
#include <stdlib.h>

static void func(char *pSrc) {
    int x;
    for ( x = 0; x < 10; x++ ) {
        *pSrc++;
    }

    printf("Pointer Within Function: %p\n",pSrc  );
}

int main(void) {

    char *pSrc = "Good morning Dr. Chandra. This is Hal. I am ready for my first lesson.";

    printf("Pointer Value Before Function: %p\n",pSrc  );

    func(pSrc);

    printf("Pointer Value After Function: %p\n",pSrc  );

    return EXIT_SUCCESS;
}

这是输出

Pointer Value Before Function: 0x100403050
Pointer Within Function: 0x10040305a
Pointer Value After Function: 0x100403050

我期待的是函数之后匹配函数内的值的值.

我尝试切换到char ** pSrc,但没有达到预期的效果.

我相信答案很简单,但我是一名正在恢复的硬件工程师,似乎无法弄清楚:-)

解决方法

函数内的指针是传递指针的副本.

它们都拥有相同的地址但具有不同的地址,因此更改其中一个地址所持有的地址不会影响另一个地址.

如果你想增加函数内部的指针,则传递它的地址,就像这样

static void func(char **pSrc) {
    int x;
    for ( x = 0; x < 10; x++ ) {
        (*pSrc)++;
    }    
    printf("Pointer Within Function: %p\n",pSrc  );
}

func(&pSrc);

另外,请注意不要修改内容,因为指针指向字符串文字,并且不能修改字符串文字.

原文链接:https://www.f2er.com/c/119704.html

猜你在找的C&C++相关文章