В с++ в структуре элементам присваивается ноль, а когда я пытаюсь сделать это в си, мне выдает ошибку, как можно исправить/заменить?
struct example {example *p=NULL;}
И еще один пример из с++, который не работает на си, когда вызываю функцию, выдает ошибку на "*&"
void function(spis *&h);
В C в отличии от C++ вы не можете в объявлении структуры указывать инициализаторы.
Поэтому данное объявление структуры
struct example {example *p=NULL;};
не будет компилироваться. Более того в C данное объявление также некорректно по другой причине: имя example
не является именем структуры. Необходимо его предварить ключевым словом struct
. Например
struct example { struct example *p; };
В принципе нет необходимости использовать инициализатор внутри объявления структуры. Вы всегда можете инициализировать соответствующие поля при создании объекта структуры или присвоить им значения уже после создания объекта структуры. Например,
includeВ C:
struct example
{
struct example *p;
};
int main( void )
{
struct example list = { NULL };
}
Или
#include <stdlib.h>
struct example
{
struct example *p;
};
int main( void )
{
struct example *list = malloc( sizeof( struct example ) );
list->p = NULL;
//...
free( list );
}
Что касается этого объявления
void function(spis *&h);
то в C++ параметр является ссылочным типом на указатель типа spis *
. В C ссылочные типы отсутствуют. Для большего понимания это объявление можно переписать следующим образом в C++:
typedef spis * T;
void function(T &h );
то есть параметр h
- это ссылка.
Чтобы передать объект в функцию по ссылке в C, нужно передавать его через указатель на объект.
То есть вышеприведенную функцию следует объявить следующим образом
void function(spis **h);
Такая функция будет рботать в C и в C++.
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
У меня такая проблема: мне нужно сдвинуть все элементы массива влево на 2То есть если начальный массив {1, 2, 3, 4, 5}, то должно получиться {3, 4, 5, 1, 2}
Как мне заполнить массив вводом с клавиатуры через цикл, чтобы при присваивании элементам массива значений и при нажатии Enter курсор не перебегал...
Подскажите пожалуйста, есть функция для GET запроса через WinInetОна отлично отрабатывает на Win10 (мой домашний ПК) и на Win7 (один из серверов)
Как можно скопировать из указателя на int в новую переменную, пытаюсь