Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Кіріспе
C бағдарламалау тіліндегі құрылымды тип
Structured type in C programming language
C бағдарламалау тіліндегі (және көптеген туындыларындағы) құрылым – жад блогында бір атаумен физикалық тұрғыдан топтастырылған айнымалылар тізімін анықтайтын, әртүрлі айнымалыларға бір сілтеме арқылы немесе құрылымның аталған аты арқылы қол жеткізуге мүмкіндік беретін, бірдей мекенжайды қайтаратын құрамдас дерек типі (немесе жазба) болып табылады. Struct дерек типі басқа дерек типтерін қамтуы мүмкін, сондықтан ол қатты дискідегі каталог жазуы (файл ұзындығы, атауы, кеңейтімі, физикалық мекенжайы және т.б.) сияқты аралас дерек типтерінің жазбалары үшін немесе басқа аралас типтегі жазбалар (атауы, мекенжайы, телефоны, балансы және т.б.) үшін қолданылады. C құрылымы сөз ұзындығы шекараларымен әдетте шектелетін (өлшемделген) физикалық жадтың үзділіссіз блогына тікелей сілтеме жасайды. Ол Intel процессорлары үшін кейбір құрастырушылардағы ұқсас аталатын мүмкіндікке сәйкес келеді. Ұзділіссіз жад блогы болғандықтан, құрылымдағы әрбір өріс бастапқыдан белгілі бір тұрақты смещенияда орналасқан. Struct мазмұны үзділіссіз жадта сақталғандықтан, primitives үшін қолданылатындай, нақты бір типті struct сақтау үшін қажетті байттар санын алу үшін sizeof операторын пайдалану керек. Struct-тегі нақты өрістердің сәйкестендірілуі (сөз шекараларына қатысты) жүзеге асыруға байланысты болып табылады және толтыруды қамтуы мүмкін, бірақ қазіргі заманғы компиляторлар әдетте #pragma pack директивасын қолдайды, ол сәйкестендіру үшін қолданылатын байттардағы өлшемді өзгертеді. C++ тілінде struct C++ класына ұқсас, бірақ әдепкі көріну мүмкіндігі басқаша: кластың мүшелері әдепкі бойынша жеке, ал struct мүшелері әдепкі бойынша қоғамдық.
A struct in the C programming language (and many derivatives) is a composite data type (or record) declaration that defines a physically grouped list of variables under one name in a block of memory, allowing the different variables to be accessed via a single pointer or by the struct declared name which returns the same address. The struct data type can contain other data types so is used for mixed data type records such as a hard drive directory entry (file length, name, extension, physical address, etc. ), or other mixed type records (name, address, telephone, balance, etc.). The C struct directly references a contiguous block of physical memory, usually delimited (sized) by word length boundaries. It corresponds to the similarly named feature available in some assemblers for Intel processors. Being a block of contiguous memory, each field within a struct is located at a certain fixed offset from the start. Because the contents of a struct are stored in contiguous memory, the sizeof operator must be used to get the number of bytes needed to store a particular type of struct, just as it can be used for primitives. The alignment of particular fields in the struct (with respect to word boundaries) is implementation specific and may include padding, although modern compilers typically support the #pragma pack directive, which changes the size in bytes used for alignment. In the C++ language, a struct is identical to a C++ class but has a different default visibility: class members are private by default, whereas struct members are public by default.
Басқа тілдерде
C тіліндегі struct дерек типі ALGOL 68 тіліндегі struct дерек типінен туындаған. C-дегі құралас дерек типіне ұқсас, C#-тағы struct дерек типі (Visual Basic NET-тегі құрылым) сыныпқа ұқсас. Бұл тілдерде struct пен сынып арасындағы ең басты айырмашылық – struct функцияға аргумент ретінде жіберілгенде, сол функциядағы struct-қа енгізілген өзгерістер бастапқы айнымалыға әсер етпейді (егер сілтеме арқылы жіберілмесе). Бұл C++ тілінен өзгеше, онда сыныптар немесе struct-тар статикалық немесе динамикалық түрде стекте (C#-қа ұқсас) немесе үйіндіде, тікелей сілтеме арқылы орналастырылуы мүмкін. C++ тілінде struct пен сыныптың арасындағы жалғыз айырмашылық – struct-тың мүшелері мен негізгі сыныптары әдепкі бойынша ашық болады. (class кілт сөзімен анықталған сыныптың мүшелері мен негізгі сыныптары әдепкі бойынша жеке болады.)
The struct data type in C was derived from the ALGOL 68 struct data type. Like its C counterpart, the struct data type in C# (Structure in Visual Basic NET) is similar to a class. The biggest difference between a struct and a class in these languages is that when a struct is passed as an argument to a function, any modifications to the struct in that function will not be reflected in the original variable (unless pass by reference is used). This differs from C++, where classes or structs can be statically allocated or dynamically allocated either on the stack (similar to C#) or on the heap, with an explicit pointer. In C++, the only difference between a struct and a class is that the members and base classes of a struct are public by default. (A class defined with the class keyword has private members and base classes by default.)