【发布时间】:2015-06-21 21:48:59
【问题描述】:
我正在向一个指针传递一个更新它的函数。但是,当函数返回指针时,它会返回到函数调用之前的值。
这是我的代码:
#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,但效果不佳。
我确信答案相当简单,但我是一名正在康复的硬件工程师,似乎无法弄清楚:-)
【问题讨论】:
-
您需要传递
char *pSrc的地址,这样您就可以修改pSrc指向的内容(保留char *pSrc,将其传递为&pSrc,并且让函数接受char **。
标签: c function pointers pass-by-value