C語言基礎(下)

2020-12-24 BitLegend
C語言的世界

結構體類型

什麼是結構體

我們觀察現實世界的時候,可以發現很多的東西它都是由不同的部分組合起來的。比如手機由電池、屏幕、晶片等很多個部分組成。同時對於一個電池它又是由很多的其他東西組成。結構體就是把這些東西組合在一起,進行統一的訪問和管理。可以理解成是對現實世界的抽象結構體不僅可以記錄不同類型的數據,而且使得數據結構是「高內聚,低耦合」的,更利於程序的閱讀理解和移植,而且結構體的存儲方式可以提高CPU對內存的訪問速度。

定義結構體

struct 數據類型名{//結構體數據成員列表};示例

struct Student{char * name;char * gender;char * mail;int age;};聲明結構體變量

方式一

struct Student student;方式二

struct Student {char name[10];char * gender;char * mail;int age;} stu;方式三

struct {char * name;char * gender;char * mail;int age;} stu;//之後無法再繼續定義變量結構體變量的初始化

結構體定義時初始化

struct Student{char name[10];char *gender;char *mail;int age;} student = {"泱澈", "男", "2633218009@qq.com", 21};變量定義時初始化

struct Student stu;// 此時需要進行類型轉換stu = (struct Student){"泱澈","男","2633218009@qq.com",21};//部分初始化struct Student stu = {.name = "泱澈"};單個進行賦值

//對數組類型的數據不能直接賦值 例如 stu.name = "泱澈";strcpy(stu.name,"泱澈"); stu.age = 21; stu.gender = "男";結構體變量的使用

我們使用 變量.成員欄位 來使用結構體的數據成員

strcpy(stu.name,"泱澈"); stu.age = 21; stu.gender = "男"; stu.mail = "2633218009@qq.com"; printf("%s\n", stu.name); printf("%s\n", stu.gender); printf("%s\n", stu.mail); printf("%d\n", stu.age);結構體數組

語法定義

struct Student{char * name;}stu[5];使用上與單個結構體變量相同,在數組中需要加上在數組中的下標

使用示例

#include <stdio.h>#include<string.h>struct Student{char * name;};int main(){struct Student stu[2];stu[0] = (struct Student){"泱澈"};printf("%s\n", stu[0].name);return 0;}結構體指針

指向結構體類型的指針

使用示例

#include <stdio.h>#include<string.h>struct Student{char * name;};int main(){struct Student stu = {"泱澈"};struct Student * p;p = &stu;printf("%s\n", (* p).name);printf("%s\n", p->name);return 0;}結構體嵌套

一個結構體當中可以包含其他類型的結構體,當中自身當中不能包含相同類型的結構體,但是可以包含執行自身的指針

使用示例

#include <stdio.h>#include<string.h>struct gender{char * ch;};struct Student{char * name;struct Student * s;struct gender gen;};int main(){struct gender gen = {"男"};struct Student stu = {"泱澈",NULL};struct Student student = {"泱澈",&stu,gen};printf("%s\n", student.name);printf("%s\n", (student.s)->name);printf("%s\n", student.gen.ch);return 0;}結構體變量在作為參數傳遞的時候使用的是值傳遞

typedef struct 與 struct 的區別

typedef 關鍵字可以將一種數據類型添加一種別名,例如 typedef int Int;此時Int 等價於 int。在stuck中,我們定義的別名可以直接用於定義變量,等價於 struct 類型名。

使用示例

#include <stdio.h>#include<string.h>struct gender{char * ch;};typedef struct Student{char * name;struct Student * s;struct gender gen;} Stu;int main(){struct gender gen = {"男"};struct Student stu = {"泱澈",NULL};struct Student student = {"泱澈",&stu,gen};//使用新定義的類型名 定義指針變量 等價於 struct StudentStu * s = &student;printf("%s\n", (*s).name);printf("%s\n", ((*s).s)->name);printf("%s\n", (*s).gen.ch);return 0;}enum 枚舉

什麼是枚舉

枚舉就是將我們數據可能存在的結果有限個的羅列出來。比如一個人的性別不是男就是女。不會出現其他的值。這個時候我們就可以使用枚舉來代表

語法示例

#include <stdio.h>#include<string.h>enum Gender{MAN = 1, //不指定值則從 0開始WOMAN = 2 //不指定值則從上一個定義的值開始遞增,為 2};int main(){//定義枚舉變量enum Gender g;//枚舉變量只可能存在一種值g = WOMAN;printf("%d\n",g);return 0;}union 共用體

什麼是共用體

共用體內部可以定義N個變量,但是這個N個變量之間會相互影響。共用體的所有成員佔用同一段內存,修改一個成員會影響其餘所有成員

語法示例

#include <stdio.h>#include<string.h>union Data{int a;char b;short c;};int main(){union Data d ;d.a = 46;printf("%d\n",d.a);printf("%c\n",d.b);printf("%d\n",d.c);printf("-----\n");d.b = 'a';printf("%d\n",d.a);printf("%c\n",d.b);printf("%d\n",d.c);printf("-----\n");d.c = 47;printf("%d\n",d.a);printf("%c\n",d.b);printf("%d\n",d.c);return 0;}/* 運行結果: 46 . 46 ----- 97 a 97 ----- 47 / 47*/以上就是本期的全部內容了,非常感謝你能看到這裡,我們下期見!

相關焦點

  • C語言基礎知識
    pow(x, y)函數C 和 Python 語言的 pow(x, y) 方法都是用於返回 (x 的 y 次方) 的值,C 語言中其原型為:double pow(double x, double y)。數據類型整數類型下表列出了關於標準整數類型的存儲大小和值範圍的細節:浮點類型下表列出了關於標準浮點類型的存儲大小、值範圍和精度的細節:IO 函數
  • 學員問:C語言入門要掌握哪些基礎知識?
    01C語言程序的結構認識用一個簡單的c程序例子,介紹c語言的基本構成、格式、以及良好的書寫風格,使小夥伴對c語言有個初步認識。; /*把兩個數之和賦值給整型變量sum*/ }重點說明—1、任何一個c語言程序都必須包括以下格式:main() { }——這是c語言的基本結構,任何一個程序都必須包含這個結構。
  • C語言怎麼樣?今天聊聊C語言的發展史!
    第一個C語言編譯器是怎樣編寫的? 不知道你有沒有想過,大家都用C語言或基於C語言的語言來寫編譯器,那麼世界上第一個C語言編譯器又是怎麼編寫的呢?這不是一個「雞和蛋」的問題…… 回顧一下C語言歷史:Tomphson在BCPL的基礎上開發了B語言,Ritchie又在B語言的基礎上成功開發出了現在的C語言。
  • C語言入門級教程:基礎數據類型與基本算法,學編程從此刻開始!
    今天帶大家了解一下學C語言必備的基本數據類型和基本算法,適合剛學C以及零基礎的小夥伴! 話不多說,我們一起來學習吧~ 數據類型 ● 基本類型 基本類型就是我們在使用C語言時最基礎的數據類型,包括整形(短整型,基本整型,長整型)、字符型、浮點型(單、雙精度)以及枚舉類型。
  • 用C語言編寫屬於自己的程式語言,大一學完C語言即可做!
    首先,明確一點,咱這個項目只是做一個簡單的腳本語言而不是編譯型語言!!!其次,本文不需要太多專業知識,所以不慌。最後,本文只是簡單實現腳本語言,雖然不牛X......>2.實現變量定義,賦值和銷毀3.更多功能關注我後期發教程三 要用到的幾個 C語言 基礎庫裡的函數,請了解這些函數後再繼續閱讀:
  • 新手如何開始C語言基礎學習?
    因此,對於剛剛入門編程的新手來講,從C語言開始你的編程生涯無疑是最好的選擇。那麼,新手如何開始C語言基礎學習呢?下面我們來一起看一看。在學習之前,我們首先要知道為什麼學習C語言。眾所周知,C語言是一門簡單、底層、較早的程式語言,後來的很多語言在語法上都和C語言類似,比如Java、PHP等程式語言都是從C語言衍生出來的,因此掌握C語言將為學習其他程式語言打下更好的基礎。但同時大家也要知道,只會C語言的話,想要找工作還是很困難的。總的來講,C語言的基礎學習不過是冰山一角,要想成為一名優秀的程式設計師,需要學習的東西還有很多。
  • 第一篇:C語言編程基礎語法
    本專欄系列分六篇,總結了C語言基礎知識的核心要點。教學視頻已上線,讀者可根據自身情況有選擇性地學習。01編程基礎C語言——貝爾實驗室、Dennis Ritchie屬於高級語言,更接近人類語言邏輯,需要編譯器編譯,執行依賴運行環境;但容易學習。其特點:模塊化編程程序設計,層次清晰;語句簡潔,提出程序庫概念;功能強大,系統、應用軟體均可開發;移植性好,適合不同的作業系統。除此之外,C語言還有豐富的運算符、數據結構等,程序設計自由度大,可以對硬體進行操作。
  • 學習c語言,知道這三個資源就行了
    c語言作為目前最熱門的程式語言之一,一直是學生、程式設計師必須學習的課程之一,但目前許多學校的課程太過老舊,教材和教程也參差不齊,這裡就給大家推薦幾個比較好的學習c語言的資源。第一個推薦的就是《C Primer Plus》,作為一本廣受大家認可的工具書,書中詳細地講解了C語言的基本概念和編程技巧,並且包含了許多習題和例子,可以有效的幫助初學者建立對於C語言的知識體系,是一本對小白比較友好,且內容全面的入門教材。
  • C語言基礎:標識符
    標識符:在程式語言中,標識符是用戶編程時使用的名字,變量、常量、函數、語句塊都有名字。是用來標識某個實體的一個符號,是對變量名、函數名、標號和其他各種用戶定義的對象命名。C語言中標識符的命名規範:1.標識符由字母、數字、下劃線組成,並且首字母不能是數字。(C 標識符內不允許出現標點字符,比如 @、$ 和 %。)2.標識符對大小寫敏感,即嚴格區分大小寫。一般對變量名用小寫,符號常量命名用大寫。
  • C語言程序設計試題及答案
    A) 'a'&&'b' B) a<=b C) a||b+c&&b-c D) !((a<b)&&!c||1)14、設有數組定義:char array[]=「student」;則數組所佔的存貯空間為( )。
  • 零基礎看得懂的C語言入門教程
    此次編寫計劃編寫一個快速入門的系列以及另一個全方面學習C語言的系列。快速入門系列以輕鬆、愉悅的方式編寫,並且剝離了入門階段極少使用的技術及概念,通過最「接地氣」的方式使剛入門的新手學習到最符合當前階段的知識,計劃閱讀時長為3小時即可完成C語言關鍵內容的掌握,並且達到期末不掛科的水平。
  • 學習C語言之前,你需要知道這些!
    最近很多人私信問我,零基礎如何使用C語言進行編程?其實,如果您想很好地學習C語言,那麼具有良好的習慣和準備工作至關重要,下面讓我們看一下學習C語言需要進行哪些準備工作,一起來認識一下。首先,我們要下載並安裝編譯器,編譯器會將C語言解釋為計算機可以理解的機器代碼,編譯器通常是免費的,但是,不同的編譯器不能在不同的作業系統上使用,對於Windows系統,您可以嘗試使用MicrosoftVisualStudioExpress或MinGW編譯器,對於Mac系統的用戶,XCode是出色的C語言編譯器,對於Linux,gcc是一個不錯的選擇。
  • C語言項目中.h和.c文件的關係和概念
    在編譯器只認識.c(.cpp))文件,而不知道.h是何物的年代,那時的人們寫了很多的.c(.cpp)文件,漸漸地,人們發現在很多.c(.cpp)文件中的聲明語句就是相同的。
  • 物聯網開發筆記——嵌入式開發之Linux系統中C語言分支判斷語句
    下面就開始這套智能家居系統是如何在物聯網基礎上構建。在這裡你可以0開始,然後到1質變,僅僅需要一起跟我學物聯網系列的開發筆記的文章。第五節物聯網開發筆記——嵌入式開發之Linux系統中輸入輸出嵌入式開發學習C語言打下基礎
  • 門外漢入門級C語言學習筆記——從東拉西扯中硬核回歸
    於是我做了些筆記給與我當初同樣迷茫的電腦編程小白——我們一起從0學習程式語言——C語言。不誇張的說——C是任何語言的基礎。C是一門程式語言,跟計算機對話。為什麼偏偏是C?可是為什麼很多人在說這句話呢?我就是不懂啊!因此,我們最初,先找到真正的內層原因——作為啟動硬核的驅動力。清楚了,才不易半途而廢。
  • c語言是好幾百年的內功,python是大力金剛掌?
    python現在作為最火的語言之一。在不久前成功壓住了c語言和Java,這是科技進步的發展的必然結果。python非常容易學也是一個很重要的原因。主要還是學習python還抓住了時代的潮流,順應時代的發展,比如未來的發展的方向,人工智慧這一些。
  • c語言程序設計是什麼概念?及其作用與產生原因
    c語言程序設計什麼是c語言程序設計?它的作用是什麼?因為什麼而產生?首先,c語言是一門計算機高級語言,就是除了0011101這樣的二進位代碼這些基本語言外。人類用適合自己一般邏輯的方便的,字符,詞組,字母等等來設計的語言。
  • python與c語言的語法有哪些不一樣的
    在眾多程式語言之中,想必很多人都聽說過Python和C語言,在進行編程學習之前,大家都會問:python和c語言的區別有哪些?我該如何選擇?接下來我們來看看吧。python與C的區別如下:1、語言類型:Python是一種基於解釋器的語言,會逐行讀取代碼,將Python編譯為字節碼,由大型C程序解釋;C是一種編譯語言,完整的原始碼將直接編譯為機器代碼,由CPU直接執行。
  • c語言現在的就業形勢如何?開課吧C++課程怎麼樣?
    只要精通這兩門語言,其他的計算機語言很容易上手我個人認為,如果你是打算用高級語言的,學習c語言是必不可少的,學會C語言是你日後更上一個臺階的基礎,而且C語言的編程邏輯跟其他的,很多是相同的。所以如果是打算往這個方向發展的,靜下心來去學吧,不會錯的。
  • C/C+編程筆記:零基礎講解C語言——基本字符集
    C語言過程中最枯燥的部分,分幾次講解,我會儘量用最輕鬆的方式講解 在C語言中,符號常量,變量,數組,函數等都需要一定的名稱,我們把這種名稱成為標識符。也就是說,標識符我們為C語言中出現的所有元素取得名字。