system()在C函数中更改char *参数地址

时间:2018-12-26 11:22:24

标签: c system

我有功能,说:

int foo(char* a)
{
    printf("%d\n", (int)a);
    char cmd[] = "echo hello";
    system(cmd);
    printf("%d\n", (int)a);
}

用C代码编写,然后在Linux上运行它;这样做之后,我看到printf的输出是:

274351760
1853775725

我真是太困惑了!任何想法?! :|

1 个答案:

答案 0 :(得分:3)

在这里工作:


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

int foo(char* a)
{
    printf("%p\n", a);
    char cmd[] = "echo hello";
    system(cmd);
    printf("%p\n", a);
        return 0;
}

int main(void)
{
foo("OMG");
return 0;
}

输出:


$ ./a.out
0x400718
hello
0x400718