原创 子網掩碼形象理解

起因:主機A要和主機B通信,需要知道什麼呢?主機A要知道主機B的IP地址,Mac地址等。那麼如何求得主機B的IP地址呢?            這就要用到子網掩碼的概念。 作用:爲了區分網絡號和主機號。 例子:加入有一個C類的網絡號是19

原创 c++中const和引用

c++和c語言裏面的const1:在C語言裏面的const修飾的量是一個常變量,不能作爲左值,但是可以通過泄露指針和引用去修改它,int a=10; int &p=a; 泄露了常量的引用。        但是 :int a=10;cons

原创 “珊瑚海”裏的虛函數

在c++裏面,基類和繼承類有三層的關係。1:重載,對重載來說,必須是相同的作用域,函數名相同,函數的參數列表不同。2:隱藏。所謂隱藏就是派生類把基類的同名的函數給隱藏了。在派生類對象調用此 函數的時候只能調用派生類的函數。基類的函數被隱藏

原创 static和extern不可緣木求魚

在C語言裏面static和extern對我們來說,是最熟悉的“陌生人”,對於這兩個關鍵字,我們不能病急亂投醫,不能緣木求魚。必須從根本上認識他們。 1:static如果在一個函數體裏面的話,那麼他就只定義一次,這我在“對全局變量的一點認識

原创 inline函數和普通函數以及static與#define之間的“恩怨前仇”

在c++裏面引入了inline函數,首先它和#define的區別:A:1:#define是在預編譯的時候,進行的沒有類型檢查的單純替換,而inline是在編譯的時候進行的有類型檢查的代碼展開。2:#define沒有調試的可能,如果你的代碼

原创 #define和typedef的比較以及#define與函數的不同

#define和typedef的比較 1:typedef是聲明新的類型名,使用新的類型名代替原有的類型名,    而且typedef是在編譯的時候有用,所以會進行類型的檢測。    而#define是在預編譯的時候進行簡單的宏替換,所以不

原创 關於靜態全局變量的一些想法

靜態全局變量在初始化的時候只初始化一次,接着它就不在初始化了,這是怎麼實現的那,我們通過反彙編代碼來看看。 #include<stdio.h> int fun(int a1) {  static int a=a1;  static in

原创 內存棧的分配和堆的分配 。printf函數的認識

我們拿一個簡單的程序來看一看。 在底層彙編之下函數的調用和內存的關係。 #include<stdio.h> int add(int a,int b) {  int c=0;  c=a+b;  return c; } void main()

原创 可見性和生存期的比較

1:可見性一般體現在編譯過程,而生存期表現在執行過程。  如下:                #include<stdio.h> void main() {  int x,y=10,dv=100;  for(y=x;y>0;y=y

原创 數組的“面具”

在談到數組時, 我們總是將他們與指針混在一起。下面,我將談談數組的一些僞裝。 1:數組名總共在四個地方表現的不同。    一:在 sizeof(數組名)這個時候數組名代表的是整個數組的長度,即也就是總元素乘以每個元素佔的空間大小。   二

原创 函數參數的不同和“誇張”的引用

函數的形參的可能性有,變量,指針,數組和引用。 先來看變量。 int fun(int a,int b)      例如此函數形參是兩個變量,它們的存儲地址和主調函數裏的實參是不同的,所以 {                        

原创 虛函數的小細節

1:什麼是多態?基類的指針或者引用指向了這個繼承這個基類的不同派生類的對象,通過該指針和引用派生類的同名覆蓋方法。此時,基類指針指向那個派生類對象,就調用那個派生類方法。2:靜態綁定?動態綁定?靜態綁定:就是在編譯的時候就已經確定了調用那

原创 sizeof PK strlen

區別1:sizeof是關鍵字,其後可跟變量,跟類型時一定要加括號,而且返回的是一個無符號的整形,strlen()相當於              一個計數器,它的參數是char *,而且必須以'\0'結束. 區別2:char a[]={s

原创 數組和指針的區別和聯繫?

1:數組名代表一個靜態地址,它指向數組元素的首地址,不可隨意更改。   而指針變量指向一個變量或一塊內存的地址單元。可以改變指向。 2:在使用sizeof()中,sizeof(數組名)代表整個數組的所有字節的和,而sizeof(指針)的長

原创 函數調用棧的使用

#include<stdio.h>a.cint sum(int a,int b);int main(){    int x=10;    int y=20;    ret=sum(s,y);    return 0;}b.cint sum