system () изменяет адрес аргумента char * в функции в C - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть функция, скажем:

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 голосов
/ 26 декабря 2018

Работает здесь:


#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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...