В C я пытаюсь установить значение указателя, отправив его функции, но значение не изменится за пределами функции. Вот мой код:Как установить ссылку на указатель через функцию
#include <stdio.h>
void foo(char* str) {
char* new_str = malloc(100);
memset(new_str, 0, 100);
strcpy(new_str, (char*)"new test");
str = new_str;
}
int main (int argc, char *argv[]) {
char* str = malloc(100);
memset(str, 0, 100);
strcpy(str, (char*)"test");
foo(str);
printf("str = %s\n", str);
}
Я хочу напечатать:
str = new test
но этот код выводит:
str = test
Любая помощь будет оценена. Заранее спасибо.
"Существует не передача по ссылке в C" - не является массивы передаются по ссылке? – naivnomore
@naivnomore В основном вы передаете указатель, который (по крайней мере синтаксически) отличается от передачи ссылок в C++. – Eiko
Нет, это не так. Массивы распадаются на указатели при передаче в качестве параметров, но это все равно не является передачей по ссылке, потому что изменение значения самого аргумента указателя не влияет на массив. –