结构体,位域,共用体
Posted godehi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结构体,位域,共用体相关的知识,希望对你有一定的参考价值。
#include <stdio.h> #include <string.h> /** * 结构体 */ struct Books{ char a[30]; char b[30]; int c; }Book1,Book2; /** * 结构体作为参数 * @param book [description] */ void printBook( struct Books book ) { printf( "Book a : %s ", book.a); printf( "Book b : %s ", book.b); printf( "Book c : %d ", book.c); } /** * 结构体指针作为参数 * @param book [description] */ void printBook1( struct Books *book ) { printf( "Book a : %s ", book->a);//指针访问结构成员用-> printf( "Book a : %s ", (*book).a);//直接访问结构成员用. printf( "Book b : %s ", book->b); printf( "Book c : %d ", book->c); } void main() { // strcpy(Book1.a,"asdasdasdasd"); // strcpy(Book1.b,"123123"); // Book1.c = 212; // printBook(Book1); // 指向结构的指针 // struct Books *b; // b = &Book1; // printBook1(b); // printBook1(&Book1); /** * 位域 */ // struct bc{ // unsigned int a:1; // unsigned int :1; // unsigned int b:5; // unsigned int c:3; // unsigned int d:8; // }bit,*pbit; // bit.a = 1; // bit.b = 30; // bit.b = 33;//定义的数字不能超过规定的内存 否则会编译失败 // bit.c = 7; // bit.d = 255; // printf("%d,%d,%d,%d ", bit.a,bit.b,bit.c,bit.d); // pbit = &bit; // pbit->a = 1; // pbit->b = 31; // pbit->c = 7; // pbit->d = 255; // printf("%d,%d,%d,%d ", bit.a,bit.b,bit.c,bit.d); //共用体共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。 //您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。 //共用体提供了一种使用相同的内存位置的有效方式。 //共用体占用的内存应足够存储共用体中最大的成员。 // union Data{ // int i; // float j; // char k[20]; // }data; // printf( "Memory size occupied by data : %d ", sizeof(data));//Memory size occupied by data : 20 // data.i = 10; // data.j = 220.5; // strcpy( data.k, "C Programming"); // printf( "data.i : %d ", data.i); // printf( "data.j : %f ", data.j); // printf( "data.k : %s ", data.k); ///////////////////////////////////////////////////// // data.i : 1917853763 // // data.j : 4122360580327794900000000000000.000000 // // data.k : C Programming // ///////////////////////////////////////////////////// ///只有最后赋给变量的值才能够保存下来,其他的数据有损伤 }
以上是关于结构体,位域,共用体的主要内容,如果未能解决你的问题,请参考以下文章