可以跳過C語言直接學習C加加?
可以跳過C語言直接學習C++?
現在有好多人都比較迷茫,學習C++是不是需要先學習C語言?
想要一起學習C++的可以加裙六二六八七一九一六,裙內有各種資料滿足大家,歡迎加裙
其實這個問題不難,就是直接了解兩者的聯繫和區別就可以給出答案。下面我們來看看他倆到底有什麼關係。
1.從名字上看,兩者似乎有很大關係
C++,這個詞在中國的程序員圈子中通常被讀做「C加加」,而西方的程序員通常讀做「C plus plus」,它是一種使用非常廣泛的計算機編程語言。好像是在C的基礎上加了又加好多東西而變成「C加加」的。
1983年,貝爾實驗室的Bjarne Stroustrup在C語言基礎上推出了C++。C++進一步擴充和完善了C語言,是一種面向對象的程序設計語言。
在計算機科學中,C++仍被稱為C語言的上層結構。它最後得名於C語言中的「++」操作符(其對變數的值進行遞增)。而且在共同的命名約定中,使用「+」以表示增強的程序。Stroustrup說:「這個名字象徵著源自於C語言變化的自然演進」。
這樣看來C語言和C++是有血緣關係的。
想要一起學習C++的可以加裙六二六八七一九一六,裙內有各種資料滿足大家,歡迎加裙
2.從實質上看 C語言是C++語言的一個子集。
C++語言包含了C語言的全部詞法和語法的內容,同時它增加了面向對象程序設計語言所必備的內容。 C為面向過程的語言,C++為面向對象的語言。 C++語言源程序中比C語言多一種數據類型-----類,也就是多一種變數-----對象。
想要一起學習C++的可以加裙六二六八七一九一六,裙內有各種資料滿足大家,歡迎加裙
每天來一個C語言經典小程序和C語言編寫的小遊戲,帶注釋和解析
一道題目,玩轉C語言指針數組和指向指針的指針
請先看下面的代碼:
#include
#include
int main(){
char *lines[5] = {
"COSC1283/1284",
"Programming",
"Techniques",
"is",
"great fun"
};
char *str1 = lines[1];
char *str2 = *(lines + 3);
char c1 = *(*(lines + 4) + 6);
char c2 = (*lines + 5)[5];
char c3 = *lines[0] + 2;
printf("str1 = %s
", str1);
printf("str2 = %s
", str2);
printf(" c1 = %c
", c1);
printf(" c2 = %c
", c2);
printf(" c3 = %c
", c3);
return EXIT_SUCCESS;
}
運行結果:
str1 = Programming
str2 = is
c1 = f
c2 = 2
c3 = E
看下面的分析之前,請先了解指針數組和指向指針的指針的基本概念
為了更加直觀,把上面的數組改成下面的形式:
#include
#include
int main(){
char *string0 = "COSC1283/1284";
char *string1 = "Programming";
char *string2 = "Techniques";
char *string3 = "is";
char *string4 = "great fun";
char *lines[5];
lines[0] = string0;
lines[1] = string1;
lines[2] = string2;
lines[3] = string3;
lines[4] = string4;
char *str1 = lines[1];
char *str2 = *(lines + 3);
char c1 = *(*(lines + 4) + 6);
char c2 = (*lines + 5)[5];
char c3 = *lines[0] + 2;
printf("str1 = %s
", str1);
printf("str2 = %s
", str2);
printf(" c1 = %c
", c1);
printf(" c2 = %c
", c2);
printf(" c3 = %c
", c3);
return EXIT_SUCCESS;
}
這樣,或許會清晰很多,char *lines[5]; 定義了一個指針數組,數組的每一個元素都是指向char類型的指針。最後5行,為數組的每一個元素賦值,都是直接賦給指針。
而lines,是一個指向指針的指針,它的類型為 char **,所以 *lines 是一個指向字元的指針,**lines是一個具體的字元。這一點很重要,一定要明白。
指針是可以進行運算的,lines 為lines[5]數組的首地址,即第0個元素的地址;lines+0, lines+1, lines+2 ... 分別是第0, 1, 2 ...個元素的首地址,*(lines+0)或lines[0], *(lines+1)或lines[1], *(lines+2)或lines[2] ... 分別是字元串 str0, str1, str2 ... 的首地址。所以:
*lines == *(lines+0) == lines[0] == str0
*(lines+1) == lines[1] == str1
*(lines+2) == lines[2] == str2
...
注意:lines為指向指針的指針,所以*(lines+n)為指針,**(lines+n)才為具體的字元。
上面的題目中:
lines[1]:它是一個指針,指向字元串string1,即string1的首地址。
*(lines + 3):lines + 3 為lines[5]數組第3個元素的地址,*(lines + 3)為第3個元素,它是一個指針,指向字元串string3。
*(*(lines + 4) + 6):*(lines + 4) + 6 == lines[4] + 6 == string4 + 6,為字元串string4第6個字元的地址,即 f 的地址,*(*(lines + 4) + 6) 就表示字元 f。
(*lines + 5)[5]:*lines + 5 為字元串 string0 第5個字元的地址,即 2 的地址,(*lines + 5)[5]等價於*(*lines + 5 + 5),表示第10個字元,即2。
*lines[0] + 2:*lines[0] 為字元串string0 第0個字元的地址,即C的地址。字元與整數運算,首先轉換為該字元對應的ASCII碼值,然後再運算,所以 *lines[0] + 2 = 67 + 2 = 69。不過要求輸出字元,所以還要轉換成69所對應的字元,即E。
想要一起學習C++的可以加裙六二六八七一九一六,裙內有各種資料滿足大家,歡迎加裙
※C加加構造函數Constructor
※如何避免C語言初學者少走彎路
※在哪些領域,C加加相對於其他編程語言有著根本性的優勢?
TAG:C加加 |
※從C語言實戰談C語言編程,談談C/C加加今後發展!
※C語言/C加加編程學習,怎樣判斷某一文件是否存在
※C語言C+.+學到什麼程度可以寫遊戲輔助?
※C語言/C加加編程學習—代碼訓練之神奇星空動態繼承
※掌握英語學習的訣竅,語言學習很EASY
※C語言學習必須擁有學習路線,不然你就只會寫貪吃蛇
※中軟國際哈爾濱ETC:C語言和C加加 哪個效率更高
※C語言C加加編程快速入門系列
※語言學習 App 讓你上癮,但又不完全學會外語
※要不,咱學學Go語言?
※C語言/C加加編程學習—坦克大戰小遊戲製作代碼
※ECC語言學校老師到訪芥末留學!見過眾多留學機構的他們,竟也直呼芥末專業水平高!
※我們為什麼要學C語言?
※為什麼一定要學習C語言?
※SKY&MISS採訪——重返WCG帶來的感觸無法用語言形容
※SKY&MISS採訪-重返WCG帶來的感觸無法用語言形容
※What?韓語竟是學習起來最困難的語言!
※當AI自適應遇到語言學習,會顛覆我們學外語的方式嗎?
※系統學習大綱——怎樣才能學好C語言?
※為什麼說C語言不是低級語言?