программирование Воронеж

Работа с памятью Си

Forums:

Когда вы передаёт указатели из функции в функцию -возвращаете ссылки на области памяти назад в main() , создаёте внутри самописных фукнкций одни объекты и структуры на основе других - важно понимать принципы работы с память в конкретном языке программирования.
Правила Си шарп в этом смысле просты - если вы ещё "помните" о выделенной памяти , путём хранения указателя - то в большинстве случаев вы можете рассчитывать на то ,что это память всегда окажется для вас доступной , в СИ же всё не так просто .

static си

Forums:

If the declaration of a ?le scope identi?er for an object or a function contains the storage-
class speci?er static, the identi?er has internal linkage.

- ограничивает видимость "объекта" его родным модулем - в частности - файлом компиляции (видим с том исходнике, в котором определён)

время "хранения" по ходу выполнения программы:

выделение памяти для массива Си - что эквивалентно, а что нет

Forums:

во - первых эквиваленты записи вроде:

char s [] ; 
char *s; 

это - один и тот же массив.

си таймер

Forums:

double difftime(time_t time2,time_t time1)

Возвращает разность time2-time1, выраженную в секундах
таймер си подробнее

создание динамического массива си

Forums:

изучите такой пример - динамический массив для структуры СИ= http://forum.pellesc.de/index.php?topic=...

printf для char

Forums:

пишите так:

char ch='0';
printf("the symb= %c",ch);

си указатель на локальный массив возвращать нельзя - warning C4172: returning address of local variable or temporary

Forums:

warning C4172: returning address of local variable or temporary - это предупреждение из Си++ , но оно справедливо и в Си++ .

нельзя возвращать указатель на переменную инициализированную в области вызываемой фукции - так как в этом случае теряются - позже напишу подробнее.

http://forum.pellesc.de/index.php?topic=...

(incomplete) struct ошибка

Forums:

было так:

 void show_users(struct user* );
 struct user* getstrucs(char **);



#define SOURCETXT "pointlist.ndl" // прописываем путь к файлу с данными об аккаунтах.

struct user {
	int zone;
	int city;
	int node;
	int point;
	char* name;
}; 

ошибка:

сложение строк си

Forums:

можно как-то так:

char * concat(const char * s1, const char * s2)
{
    size_t l1 = strlen(s1);
    size_t l2 = strlen(s2);
    size_t len = l1 + l2 + 1;

    char * dst = (char *)malloc(len);

    memcpy(dst, s1, l1);
    memcpy(dst + l1, s2, l2);
    dst[len - 1] = 0;

    return dst;
}

http://www.rsdn.ru/forum/cpp/2866797.1.aspx

Pages

Subscribe to RSS - программирование Воронеж