學點 C 語言(27): 資料類型 – 結構中的 “位欄位”

所有基礎的資料類型, 最大的也不過 10 個位元組;我們可以自訂的資料類型 -- "結構", 通過把若干類型組合在一起, 讓一種類型可以大很多.我們知道, 一個位元組有八個 Bit 組成; 能否把一種類型縮小、縮小到 Bit 級? 結構中的 "位欄位" 是以 Bit 為單位的, 這已經是電腦的最小單位, 大小是 char 類型的 1/8.下面的例子中定義的位欄位, 分別有 1-4 Bit 大小; 1 Bit 的欄位只能放兩個數(0、1), 4 Bit 的欄位也只能放下 16 個數:1.

學點 C 語言(28): 資料類型 – 聯合(union)

在結構中, 每個欄位的資料類型是唯一的; 使用聯合可以在一個欄位中儲存不同的資料類型.不同的資料類型共用一塊記憶體. 當然其記憶體大小應依著大的來.聯合中的資料, 非此即彼, 只有一個有效; 應該有說明在某個資料中此時有用的是什麼類型.除了共用記憶體以外, 聯合與結構一樣.1. union 的大小是其中最大資料成員的大小:#include <stdio.h>int main(void){ union MyUnion { short n1; int

學點 C 語言(29): 資料類型 – 定義新類型(typedef)

自訂的類型名一般要大寫, 以提示這是自命名的類型.1. 把 unsigned long 更名為 UINT:#include <stdio.h>int main(void){ typedef unsigned long UINT; UINT num = 1234567890; printf("%lu\n", num); getchar(); return 0;}2. 給一個結構重新命名:#include <stdio.h>int

學點 C 語言(31): 函數 – 聲明、定義、調用

1. 如果函數沒有聲明, 應該在調用前定義:#include <stdio.h>/* 定義求大值函數 */int MAX(int x, int y) { if (x > y) return x; else return y;} /* 定義求小值函數 */int MIN(int x, int y) { return x 2. 可以在函數頭聲明:#include <stdio.h>int main(void){

學點 C 語言(32): 函數 – 傳回值

C 語言的函數可以返回數組以外(不包括數組指標)的任何類型.不寫明傳回型別, 在以前的 C 語言版本中是預設返回 int, 現在 C99、C++ 已不支援.void 表示沒有傳回值, 也就無須 return 語句; 如果是其他語句必須有 return 語句.在 main 函數中(只是 main 函數)若忘掉 return, 有些編譯器會自動添加 return 0;1. 每執行 return 語句函數將會退出:#include <stdio.h>int main(void){

學點 C 語言(14): 資料類型 – 雙位元組字元類型 wchar_t

在 C 語言中, char 類型永遠都是一個位元組, 雙位元組字元類型是 wchar_t;但它不是內建類型, 定義在 stddef.h.給 wchar_t 類型的字元或字元數組(也就是字串)賦值要冠以 L;格式化輸出(如 printf) wchar_t 類型的字串, 要用 %S(而非 %s) 標識.#include <stdio.h>#include <stddef.h>int main(void){ wchar_t wc = L'A'; wchar_t

學點 C 語言(9): if 語句

1. 常規:#include <stdio.h>int main(void){ int i; for (i = 0; i #include <stdio.h>int main(void){ int i; for (i = 0; i 4) printf("%d\n", i); else printf("*\n"); } getchar(); return 0;}2.

學點 C 語言(15): 資料類型 – sizeof(檢測類型大小)

擷取類型大小的變數最好不是 int 類型, 而是 size_t 類型;size_t 在 stdio.h、stddef.h 都有定義.1. 擷取已知類型的大小:#include <stdio.h>#include <stddef.h>int main(void){ char n = 2; size_t size; size = sizeof(char); printf("%*u: char\n", n,size); size = sizeof(

學點 C 語言(21): 資料類型 – 數組與指標

1. 擷取數組的地址無須 &, 因為數組名本身就是個地址#include <stdio.h>int main(void){ char c = 'A'; char cs[] = "ABC"; printf("%c, %s\n", c, cs); /* 擷取字元及字元數組的內容 */ printf("%p, %p, %p\n", &c, cs, &cs); /* 擷取字元及字元數組的地址, cs 與 &cs

學點 C 語言(16): 資料類型 – 關於常量的首碼、尾碼

曾經對 float num = 3.14f; 這樣的賦值非常疑惑, 其實現在也不明白.既然說明了是 float 類型, 又何必在 3.14 後面掛個 f 呢?書上說: int num = 100; 一個整數常量將預設為 int 類型(除非常數有尾碼或超出了 int 的範圍)double num = 3.14; 一個浮點數常量將預設為 double 類型並要求:long num = 100L;long long num =

學點 C 語言(22): 資料類型 – 多維陣列與指標

1. 關於數組的首地址:#include <stdio.h>int main(void){ char cs[2][3] = { {'A','B','C'}, {'D','E','F'} }; char *p1,*p2,*p3,*p4; p1 = p2 = p3 = p4 = NULL; /* 下面四個指標都是指向了同一個地址 */

學點 C 語言(10): switch 語句

1. 常規:#include <stdio.h>int main(void){ int i; for (i = 0; i 2. 省略 default:#include <stdio.h>int main(void){ int i; for (i = 0; i 3. 相同結果:#include <stdio.h>int main(void){ int i; for (i = 0; i 4. 用於字元:#include <

學點 C 語言(17): 資料類型 – 因類型引發的問題或錯誤

1. 運算結果超出類型大小:#include <stdio.h>#include <limits.h>int main(void){ short s1 = SHRT_MAX; short s2 = SHRT_MAX; short num1; int num2; /* 不會是期望的值 */ num1 = s1 + s2; printf("%d\n", num1); /* 這樣可以了 */ num2 = s1 + s2;

學點 C 語言(23): 資料類型 – 給指標分配記憶體

C 語言的記憶體配置很簡單: malloc、calloc、realloc、freemalloc(位元組數); 返回記憶體段的首地址, void 的.calloc(個數, 類型大小); 和 malloc 的區別就是它會初始化記憶體為空白.realloc(原指標, 位元組數); 重新分配由 malloc、calloc 分配的記憶體; 這裡有太多注意事項:1、如果縮小了, 會截掉一塊, 會保留前面的內容;2、如果擴大了, 仍會保留已有的內容, 但新加的記憶體不會初始化;3、在擴大時,

學點 C 語言(18): 資料類型 – 枚舉類型(enum)

1. printf 枚舉可顯示枚舉的序號:#include <stdio.h>int main(void){ enum ABC{AAA,BBB,CCC}; enum ABC e1,e2,e3; e1 = AAA; e2 = BBB; e3 = CCC; printf("%d, %d, %d\n", e1, e2, e3); getchar(); return 0;}2. 定義枚舉時可同時定義變數:#include

學點 C 語言(24): 資料類型 – 結構(struct)

1. 結構就是多個變數的集合:#include <stdio.h>int main(void){ struct Rec { int x; int y; }; struct Rec r1; r1.x = 111; r1.y = 222; printf("%d, %d", r1.x, r1.y); getchar(); return 0;}2. 定義時同時聲明變數:#include

學點 C 語言(12): 資料類型 – 整型(int)、字元(char)、浮點(float、double)

C 語言資料類型: 基本類型、構造類型、指標類型、空類型.基本類型又包括: 整型、字元、浮點(單精確度、雙精確度)、枚舉.構造類型又包括: 數組、結構體、公用體.1. 顯示整型(int)的最小、最大值:#include <stdio.h>#include <limits.h>int main(void){ int n1,n2; n1 = INT_MIN; n2 = INT_MAX; printf("%d .. %d", n1,n2);

學點 C 語言(19): 資料類型 – 數組

1. 數組的標誌是 []:#include <stdio.h>int main(void){ int nums[3]; nums[0] = 11; nums[1] = 22; nums[2] = 33; printf("%d, %d, %d", nums[0], nums[1], nums[2]); getchar(); return 0;}2. 數組的大小和維數:#include <stdio.h>int

學點 C 語言(20): 資料類型 – 指標

1. 通過 &變數 可以擷取變數地址:#include <stdio.h>int main(void){ int num = 10; printf("變數值: %d\n", num); printf("變數址: %d\n", &num); getchar(); return 0;}2. 表示變數地址的變數就是指標:#include <stdio.h>int main(void){ int num = 10;

學點 C 語言(13): 資料類型 – 整型、字元型和浮點型的擴充

整型 int 可添加 short 和 long:short int: 簡為 short;long int: 簡為 long;long long int: 簡為 long long它們都可以再添加 unsigned:unsigned int: 簡為 unsignedunsigned short int: 簡為 unsigned shortunsigned long int: 簡為 unsigned longunsigned long

總頁數: 4314 1 .... 426 427 428 429 430 .... 4314 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.