Ⅰ c語言剛學的鏈表覺得各種不方便 總覺得結構體比這個好用太多 有沒有大神能告訴我鏈表到底有什麼優點或
鏈表是用來代替數組的。在需要靈活地向隊列中插入數據或刪除數據時,鏈表的優勢就能體現出來了。因為數組就不能方便靈活地插入或刪除數據。
鏈表的節點也可以是結構體。所以你不應該把鏈表跟結構體比較。
鏈表也有缺點,那就是不能象數組那樣通過下標直接找到某個元素,而必需從頭一個一個地「查」。
將來你學了「二叉樹」時,就會發現「二叉樹」是介於「鏈表」和「數組」之間的一種數據結構,即可以靈活地向隊列中插入數據或刪除數據,又可以按下標快速獲取某個元素。但「二叉樹」也有缺點,那就是太復雜了!
Ⅱ C語言的結構體到底有用沒
指針存儲的是一個內存地址,怎麼會和結構體一樣大呢?不知道你在想什麼。
Ⅲ C語言中結構體佔用內存大小的問題
不會,同一個結構體佔用的內存都是一樣的,
stOne和stTwo之所以不同,是因為內存對齊問題。
取內存時,是按照主機系統是多少位來取的
32位系統,每次取四個位元組
64位系統,每次取8個位元組
根據你sizeof得到的結果,你的系統是32位的,所以每次取四個位元組,而stOne char類型佔用一個,而int佔用四個,所以char類型自動佔用了4個,否則,如果char佔用一個,取得時候,去了一個char,然後去了int變數的前三個,這樣會出問題,所以,會得到你上面sizeof的結果
stTwo,就不會因為是兩個char類型挨著的,這樣兩個char類型佔用四個,取得時候先取兩個char,再取int。
Ⅳ C語言結構體方面的問題,小弟C學的不怎麼好。
結構體是為了在現實世界中表達一個完整的邏輯概念用的,其組成成員單個表達意義不大,只有在整體中存在才能完整;
而數組則不同,每個元素與其他元素的地位基本等同,除了可排序之外,其他基本沒有可區分的餘地,在邏輯上也相對單一。
結構體成員在內存存儲上的相對位置是與編譯相關的,如果你願意將他們緊緊挨著也沒啥關系,但是有局限:1、不是所有的機器都允許這樣子定址的,有的機器會導致BUS Error而Crashed;2、效率不高。
如果不緊緊挨著,那麼就需要做地址對齊,中間某些部分會出現空洞,存在浪費現象,但是這個是任何機器都能接受的,定址效率也是最高的。
Ⅳ 請問下C語言中的結構體有什麼用
C語言中的結構體可以定義一些復雜數據類型,把一些有內在聯系的不同變數放在一起封裝成一個整體,這就是結構體。
例如:以學生為例,學生存在學號,姓名,性別,班級等。此時你可以頂一個結構體,將這些學生信息封裝到一個結構體中。
code如下:
struct student{
int iID //學生的學號
char sStuName[10] //學生姓名
char sSex[10] //學生性別
....
}
(5)c語言結構體效率怎麼樣擴展閱讀
C語言結構體在函數中的應用
typedefstructtagSTUDENT{
charname[20];
intage;
}STUDENT;
voidfun(STUDENTstu)
{
printf(「stu.name=%s,stu.age=%d/n」,stu.name,stu.age);
}
Ⅵ C語言如何學習效率更高
我自學了c++,mfc,opencv ,匯編語言,呵呵自曝一下
任何一門語言絕對不能離開實戰:
1.讀代碼,上網路搜索各種c語言的源代碼。每天讀一點,根據別人的自己模仿,不需要大的程序,哪怕是很小的一個演算法,你覺得值得學習,就記住他。
2.良好的編程習慣,關鍵語句的作用,函數的作用,文件的名稱,變數的命名,都要嚴格規范,才有助於未來的提高
3.編寫自己的程序,一周寫一個小東西,能用就型,同時要有周總結的文檔,程序員編寫文檔十分重要!!!記錄自己的程序,進步,以及想法
Ⅶ C語言中結構體究竟有什麼好處
C語言中的結構體可以定義一些復雜數據類型,把一些有內在聯系的不同變數放在一起封裝成一個整體,這就是結構體。
例如:以學生為例,學生存在學號,姓名,性別,班級等。此時你可以頂一個結構體,將這些學生信息封裝到一個結構體中。
code如下:
struct student{
int iID //學生的學號
char sStuName[10] //學生姓名
char sSex[10] //學生性別
....
}
(7)c語言結構體效率怎麼樣擴展閱讀
C語言結構體在函數中的應用
typedefstructtagSTUDENT{
charname[20];
intage;
}STUDENT;
voidfun(STUDENTstu)
{
printf(「stu.name=%s,stu.age=%d/n」,stu.name,stu.age);
}
Ⅷ c語言的優勢
C語言具有其它語言所無法比擬的優勢,因而被廣泛應用,其具體優勢如下所示:
1、簡潔緊湊、靈活方便 C語言一共只有32個關鍵字,9種控制語句,程序書寫形式自由,區分大小寫。把高級語言的基本結構和語句與低級語言的實用性結合起來。C 語言可以像匯編語言一樣對位、位元組和地址進行操作,而這三者是計算機最基本的工作單元。
2、運算符豐富 C語言的運算符包含的范圍很廣泛,共有34種運算符。C語言把括弧、賦值、強制類型轉換等都作為運算符處理。從而使C語言的運算類型極其豐富,表達式類型多樣化。靈活使用各種運算符可以實現在其它高級語言中難以實現的運算。
3、數據類型豐富 C語言的數據類型有:整型、實型、字元型、數組類型、指針類型、結構體類型、共用體類型等。能用來實現各種復雜的數據結構的運算。並引入了指針概念,使程序效率更高。
4、表達方式靈活實用 C語言提供多種運算符和表達式值的方法,對問題的表達可通過多種途徑獲得,其程序設計更主動、靈活。它語法限制不太嚴格,程序設計自由度大,如對整型量與字元型數據及邏輯型數據可以通用等。
5、允許直接訪問物理地址,對硬體進行操作 由於C語言允許直接訪問物理地址,可以直接對硬體進行操作,因此它既具有高級語言的功能,又具有低級語言的許多功能,能夠像匯編語言一樣對位(bit)、位元組和地址進行操作,而這三者是計算機最基本的工作單元,可用來寫系統軟體。
6、生成目標代碼質量高,程序執行效率高 C語言描述問題比匯編語言迅速,工作量小、可讀性好,易於調試、修改和移植,而代碼質量與匯編語言相當。C語言一般只比匯編程序生成的目標代碼效率低10%~20%。
7、可移植性好 C語言在不同機器上的C編譯程序,86%的代碼是公共的,所以C語言的編譯程序便於移植。在一個環境上用C語言編寫的程序,不改動或稍加改動,就可移植到另一個完全不同的環境中運行。
8、表達力強 C語言有豐富的數據結構和運算符。包含了各種數據結構,如整型、數組類型、指針類型和聯合類型等,用來實現各種數據結構的運算。C語言的運算符有34種,范圍很寬,靈活使用各種運算符可以實現難度極大的運算。C語言能直接訪問硬體的物理地址,能進行位(bit)操作。兼有高級語言和低級語言的許多優點。它既可用來編寫系統軟體,又可用來開發應用軟體,已成為一種通用程序設計語言。另外C語言具有強大的圖形功能,支持多種顯示器和驅動器。且計算功能、邏輯判斷功能強大。
Ⅸ 在c語言中枚舉類型和結構體類型有什麼用在什麼情況下用
補充: 我再回過頭來講講枚舉的用法吧 1、枚舉類型可以很方便地聲明很多常量。比如: enum {banana=5,orange,apple ,potato }; 這一下就聲明了4常量,分別等於4,5,6,7。 2、有的時候,聲明常量只為了起「標識」作用。比如,你設計了這么一個函數: int eat(int food){…} 你想通過傳遞的參數food的值來確定吃的是哪個食物。這時,具體的值已經不重要了,可以是1代表potato,2代表orange,也可以是別的,這時候你就可以用第一條說的方法了 追問: 因為剛學C語言不久,所以不太明白。枚舉類型我看書知道是
enum {banana=5,orange,apple ,potato },分別是5,6,7,8,但是不知道有什麼用。至於結構體類型還是沒有一個很好的概念。我第一個看到的c語言是#include<stdio.h> int main() {printf("This is a C program.\n");return 0;}這一個main大括弧裡面的是不是結構體? 回答: {}里的叫函數體,與結構體毫無關系。 如果你是剛學的話,不要著急明白結構體。按照大多數教程的安排,應該是c語言學一半才能學到結構體,學習是有個循序漸進的過程的。 至於枚舉,需要有一定的編程經驗你才能意識到它的作用。所以,我對新手的建議是:多上機,多編程。沒有編程經驗,你會很難理解語言里為什麼要設計某某功能 另外,不要忽略語言中那些為「方便」而設計的東西。方便意味著效率,而高級語言就是為效率而生的,要不還不都用匯編語言編程了? 追問: 我看的這本書是一開始就介紹先介紹數據類型的,所以見過的程序也很少,我對我自己的要求也是與其獃獃的看書不如直接上機操作。在我看書的同時我發現有i++,i+=1...這一些,一開始我不太清楚為什麼要這樣定義,而不用i=i+1,聽了你這樣說,我大概明白。由於缺乏經驗,所以還是不知道有什麼用,有什麼網站或是編程的文章介紹給我的?想在短時間內提高對C語言的認識. 回答: 適合新手的文章和網站真不多,而且枯燥的技術文章往往會扼殺新手的興趣。如果C是你的編程入門語言,那麼實在沒什麼捷徑可走——就算有也別去走。新手的任務就是打好基礎,捋清概念,步步為營地去學。 再送你一條建議: 要善於在生活中發現問題,並想辦法編程解決。 比如,你在玩「算24」的時候,有沒有想過寫一個輸入4個數,就能給出解答的程序? 老是忘東西,有沒有想過寫一個備忘錄程序? 忘俄羅斯方塊時,有沒有想過「這游戲俺也能編出來」 甚至是更為簡單的計算器程序…… 素材無處不在 追問: 我喜歡很多軟體,所以很喜歡編程,希望需要時直接就能自己編出來。有時候玩游戲也想過有外掛多好啊,但是自己又不會編,所以很想學會編程。
Ⅹ 結合變數、數組、指針變數、結構體變數談談對c語言學習的看法
本菜這幾天一直在學習結構體變數當中,就一直想著嘗試著用結構體變數這一工具來寫一個簡單的學生管理系統,經過了本菜的將近四天的奮戰,終於完成了一個具備簡單功能的學生管理系統,
首先,我要向各位碼友們聲明的是此貼並非教程貼,如題所示僅僅為本菜學習c語言過程中的心得分享帖,我不可能在這里為各位吧友進行大神般的語言描述,因為我只是一個c吧里長期潛水的菜鳥一頭,以下我只會對我非常樂於分享的東西進行比較細節的描述,其餘只會大概提起,甚至只會羅列以下代碼。。。。。。。。。
起初剛剛接觸到結構體變數的時候學到的是在
一開始就定義如下;
#define STU_NUM 60
int stu_numbers=0;
int Chinese;
int Math;
int English;
struct subject{
int chinese;
int math;
int english;
} ;
struct stu_info{
int sid; /*student id*/
char stu_name[NAME_LEN+1];
char sex[5];
struct subject S; /*這個是結構體變數的嵌套定義*/
}student[STU_NUM+1];
本學生管理系統所具備的的主要功能描述;
一. 這是一被定義為僅能容納60個學生個人信息的管理系統;
二.所包含的學生信息包括
1. 學生的學號(sid)
2.學生的姓名(不超過十個字元的字元串)
3.學生的性別(不超過三個字元的字元串)
4.各科目的成績(語數英)
5.學生數組號碼
就這樣 花了不少的功夫第一次寫完了一個不怎麼樣的學生信息管理系統
-_-|||-_-|||-_-|||-_-|||
當我再將教材往後翻幾頁的時候, 教材里順便提及了一下用鏈表來寫這個管理系統,
鏈表是一種數據結構 ,其最大的的好處就是能夠為數據分配動態內存,就不用像一開始那樣先為系統分配一個都不知道夠不夠用的空間來存貯學生的信息,額 個人感覺吧 這是我第一次比較正規地接觸到數據結構 確實是花了不少的時間來理解鏈表的構成和構造方法
不過這時間確實是花的很值得的,畢竟學會一種數據結構確實是會讓程序運行起來比較高效率(對於剛接觸的本菜來講 確實有點抽象啊)。
那麼先讓本菜來談談我眼中的鏈表究竟是怎麼樣的吧;
鏈表,首先可以細分為一小塊一小塊的結構體變數,這一小塊一小塊的結構體變數在鏈表中
是首尾相連的顧名思義 就像一條鐵鏈一樣 而這每一小塊的結構體變數中又可以從大方向地分成兩個部分, 其中一個部分就是——————涵蓋著該結構體變數里的所有信息,另一個部分就是鏈接每塊結構體變數的部分————指針 其結構如下圖