Latest web development tutorials
×

C หลักสูตร

C กวดวิชาภาษา C แนะนำโดยย่อ C การตั้งค่าสภาพแวดล้อม C โครงสร้างหลักสูตร C ไวยากรณ์พื้นฐาน C ชนิดข้อมูล C ตัวแปร C คงที่ C ประเภทการจัดเก็บ C ผู้ประกอบการ C ผู้พิพากษา C การไหลเวียน C ฟังก์ชัน C การกำหนดขอบเขตกฎระเบียบ C แถว C ชี้ C เชือก C โครงสร้าง C สหภาพ C ฟิลด์บิต C typedef C อินพุตและเอาต์พุต C การอ่านออกเขียนเอกสาร C preprocessor C ส่วนหัว C ปลดเปลื้อง C จัดการข้อผิดพลาด C recursion C พารามิเตอร์ตัวแปร C จัดการหน่วยความจำ C บรรทัดคำสั่ง C คลาสสิก 100 ราย

C ห้องสมุดมาตรฐาน

C ห้องสมุดมาตรฐาน - คู่มืออ้างอิง C ห้องสมุดมาตรฐาน - <assert.h> C ห้องสมุดมาตรฐาน - <ctype.h> C ห้องสมุดมาตรฐาน - <errno.h> C ห้องสมุดมาตรฐาน - <float.h> C ห้องสมุดมาตรฐาน - <limits.h> C ห้องสมุดมาตรฐาน - <locale.h> C ห้องสมุดมาตรฐาน - <math.h> C ห้องสมุดมาตรฐาน - <setjmp.h> C ห้องสมุดมาตรฐาน - <signal.h> C ห้องสมุดมาตรฐาน - <stdarg.h> C ห้องสมุดมาตรฐาน - <stddef.h> C ห้องสมุดมาตรฐาน - <stdio.h> C ห้องสมุดมาตรฐาน - <stdlib.h> C ห้องสมุดมาตรฐาน - <string.h> C ห้องสมุดมาตรฐาน - <time.h>

ยูเนี่ยนซี

ยูเนี่ยนเป็นชนิดพิเศษของข้อมูลที่ช่วยให้คุณไปยังสถานที่ที่แตกต่างกันในประเภทเดียวกันของข้อมูลที่เก็บไว้ในหน่วยความจำคุณสามารถกำหนดสหภาพแรงงานที่มีสมาชิกมากขึ้น แต่เวลาใด ๆ สามารถมีได้เพียงหนึ่งในสมาชิกที่มีค่า ยูเนี่ยนให้วิธีการใช้หน่วยความจำตำแหน่งเดียวกันในวิธีที่มีประสิทธิภาพ

ความหมายของสหภาพ

การกําหนดสหภาพคุณต้องใช้งบสหภาพแรงงานและกำหนดโครงสร้างในลักษณะที่คล้ายกันคำสั่งสหภาพกำหนดชนิดข้อมูลใหม่ที่มีส่วนใหญ่ของสมาชิก รูปแบบคำสั่งยูเนี่ยนจะเป็นดังนี้:

union [union tag]
{
   member definition;
   member definition;
   ...
   member definition;
} [one or more union variables];  

แท็กยูเนี่ยนเป็นตัวเลือกความละเอียดสมาชิกทุกคนคือการกำหนดมาตรฐานของตัวแปรเช่น int i หรือลอย F หรือนิยามตัวแปรอื่น ๆ ที่ถูกต้องก่อนสิ้นเซมิโคลอนร่างกายทั่วไปที่กำหนดไว้คุณสามารถระบุหนึ่งหรือมากกว่าของตัวแปรที่ยูเนี่ยนซึ่งเป็นตัวเลือก นิยามของคำว่าประเภทร่างกายทั่วไปชื่อข้อมูลมีสามสมาชิก I, F และ STR:

union Data
{
   int i;
   float f;
   char  str[20];
} data;  

ตอนนี้ชนิดข้อมูลตัวแปรสามารถเก็บจำนวนเต็มลอยหรือสตริงซึ่งหมายความว่าตัวแปร (สถานที่ตั้งหน่วยความจำเดียวกัน) สามารถจัดเก็บจำนวนมากของประเภทต่างๆของข้อมูล คุณสามารถใช้ในตัวหรือข้อมูลที่ผู้ใช้กำหนดชนิดใด ๆ ในร่างกายที่พบบ่อยตามที่ต้องการ

ยูเนี่ยนควรจะเป็นหน่วยความจำเก็บพอที่ครอบครองโดยสมาชิกที่ใหญ่ที่สุดของสหภาพ ยกตัวอย่างเช่นในตัวอย่างข้างต้นข้อมูลจะครอบครอง 20 ไบต์ของพื้นที่หน่วยความจำเพราะสมาชิกแต่ละพื้นที่ที่ถูกครอบครองโดยสตริงเป็นที่ยิ่งใหญ่ที่สุด ตัวอย่างต่อไปนี้จะแสดงสหภาพดังกล่าวข้างต้นอยู่ในขนาดหน่วยความจำทั้งหมด:

#include <stdio.h>
#include <string.h>
 
union Data
{
   int i;
   float f;
   char  str[20];
};
 
int main( )
{
   union Data data;        

   printf( "Memory size occupied by data : %d\n", sizeof(data));

   return 0;
}

เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:

Memory size occupied by data : 20

สมาชิกสหภาพการเข้าถึง

เพื่อให้สามารถเข้าถึงไปยังประเทศสมาชิกทั่วไปเราจะใช้ประกอบการเข้าถึงสมาชิก (.)ผู้ประกอบการเข้าถึงสมาชิกเป็นชื่อตัวแปรระยะเวลาและสมาชิกสหภาพแรงงานของสหภาพของเราที่จะเข้าถึงได้ระหว่างคุณสามารถใช้คำหลักเพื่อกำหนดประเภทตัวแปรยูเนี่ยนยูเนี่ยนตัวอย่างต่อไปนี้แสดงให้เห็นถึงการใช้งานของสหภาพที่:

#include <stdio.h>
#include <string.h>
 
union Data
{
   int i;
   float f;
   char  str[20];
};
 
int main( )
{
   union Data data;        

   data.i = 10;
   data.f = 220.5;
   strcpy( data.str, "C Programming");

   printf( "data.i : %d\n", data.i);
   printf( "data.f : %f\n", data.f);
   printf( "data.str : %s\n", data.str);

   return 0;
}

เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:

data.i : 1917853763
data.f : 4122360580327794860452759994368.000000
data.str : C Programming

ที่นี่เราสามารถเห็นค่าของฉันและ Fสหภาพสมาชิกได้รับความเสียหายเพราะค่าที่กำหนดให้กับตัวแปรของตำแหน่งหน่วยความจำที่ผ่านมาครอบครองซึ่งเป็นสมาชิกเหตุผลSTRการส่งออกเหมือนเดิม ตอนนี้ให้ดูที่หนึ่งและเช่นเดียวกันในครั้งนี้เราใช้เพียงหนึ่งตัวแปรในเวลาเดียวกันก็ยังแสดงให้เห็นถึงจุดประสงค์หลักของการใช้สหภาพ:

#include <stdio.h>
#include <string.h>
 
union Data
{
   int i;
   float f;
   char  str[20];
};
 
int main( )
{
   union Data data;        

   data.i = 10;
   printf( "data.i : %d\n", data.i);
   
   data.f = 220.5;
   printf( "data.f : %f\n", data.f);
   
   strcpy( data.str, "C Programming");
   printf( "data.str : %s\n", data.str);

   return 0;
}

เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:

data.i : 10
data.f : 220.500000
data.str : C Programming

ที่นี่สมาชิกทุกคนสามารถส่งออกเหมือนเดิมเพราะในเวลาเดียวกันใช้เพียงหนึ่งในสมาชิก