Почему следующий код дает ошибку сегментации.Передача указателя в C
#include<stdio.h>
void helper(char *i) {
printf("%c", *i);
*i = 't';
printf("%c", *i);
}
void main() {
char *g = "t";
helper(g);
printf("%c", *g);
}
ли что-то подобное тому, что происходит в конструктор копирования?
Когда-либо слышал о форматировании и отступе? Используй это! И C не имеет конструктора копирования. Вы вызываете неопределенное поведение. Подумайте, на что указывает 'i'. – Olaf
Какой конструктор копирования? Это [тег: C++]? И вы должны исследовать строковые литералы, ваш указатель 'g' указывает на один, и вы можете делать' * i = 't'', потому что это неопределенное поведение. –
Кроме того, в чем смысл названия вопроса? Вы получите точно такой же результат, если бы попытались сделать это в основном, не «пропуская» указатель в любом месте. –