Я только начинаю изучать язык C, создавая небольшие программы.Global Char Pointer (C Программирование)
Теперь я нахожусь в середине создания программы, для которой требуется либо структура, либо что-то глобальное, потому что позже где-то в моей функции я просто хочу называть их напрямую.
Я предпочитаю не использовать конструкцию, потому что я боюсь, что это увеличит шанс на seg. ошибка где-то между строками кода.
Мой вопрос: эти два одинаковых?
struct myTrialStruct{
char *trialOne;
char *trialTwo;
char *trialThree;
};
и
extern char *trialOne;
extern char *trialTwo;
extern char *trialThree;
char *trialOne;
char *trialTwo;
char *trialThree;
Если нет, то может кто-нибудь сказать мне, как правильно создать глобальный указатель обугленного без меня, чтобы создать -структуру?
Они не то же самое; «' '' '' ', а остальные три - нет. И использование структур не приводит к segfaults per se - неправильное использование структур может это сделать, но вы также можете получать segfaults от простых указателей символов. Именование означает, что вам нужен массив. В одном исходном файле вам нужен только 'static char * trialOne', - ничего больше его не будет использовать. В нескольких файлах вам понадобится заголовок, объявляющий 'extern char * trialOne;', и в одном файле у вас будет 'char * trialOne = 0;' (если вы разумны; 'char * trialOne;' также работает, но с большей вероятностью приведет к проблемам с Правилом Единого определения). –
'struct' не увеличит шансов на сегмент. ошибка, глобальная переменная. –
Существует чрезвычайно подробный (и обширный) ответ на вопрос [Как использовать 'extern' для обмена переменными между исходными файлами в C] (https://stackoverflow.com/questions/1433204/how-do-i-use-extern -в-шер-переменные-между-исток-файлы-в-с /); вы захотите прекратить чтение на первом или не позднее второго, где вам предлагается прекратить чтение. –