C語言的一些注意點

條件語句:(面試經常使用)面試

  • 短路原則
    • 在或運算中,若是左值爲1,則右不計算
  • 斷路原則
    • 在與運算中,若是左值爲0,則右不計算

while & do...while區別數組

  • while 先判斷後執行,有可能一次也不會執行
  • do...while 先執行後判斷,至少會執行一次

break & continue函數

  • break用於開關語句中,表示結束當前的switch結構,若是用在while,do...while,for中時是跳出循環
  • continue用於循環中時,只中止這一次循環進入下一次循環

值傳遞的特色ui

  • 操做的是不一樣的內存空間,形參的改變不會影響到實參的變化,傳遞完成即釋放,

scanf()函數讀取問題指針

  • 若是讀取十進制數在輸入時先輸入的字母則不會有讀取結果,若是先輸入的是數字加字母的組合則會讀取數字而省缺字母

數組初始化code

  • 數組除了在定義並初始化的時候可以對他進行總體操做外,其它任何狀況不容許對數組進行總體操做
  • 數組名錶明着數組的首地址,同時對應着數組第一個元素的地址
  • 數組是從低到高的連續性地址排列

字符串四大函數生命週期

  • strlen
  • strcpy
  • strcat
  • strcmp

strlen & siseof區別seo

  • sizeof是運算符,計算數組時會包含'\0'
  • strlen是函數,返回實際長度不包含'\0'

本身在實現函數時必定要加斷言assert.h中assert();內存

當二維數組爲參數傳遞的時候必須指定全部維數的大小或者省略第一維,可是不能省略第二維或更高維的大小作用域

指針

  • 注意:不管何種類型的指針,它的sizeof的大小都是4;
  • 注意:在任什麼時候候,一個指針變量只能指向一個地址值,也就是說只能指向一個數據
  • 注意:指針常量是const修飾在前,做爲在指針上,效果爲指針不可改變地址,卻能夠修改指向的地址內的值
  • 注意:常量指針是const修飾在類型以後,做用在指向的內存值上,效果爲指針可變地址,卻不能夠修改地址內的值

棧&堆

  • 數據類型:棧是先進後出,堆是二叉樹
  • 棧是自動申請自動釋放;堆是手動申請手動釋放,動態內存分配;

static做用

  • 1:默認初始化而且只初始化一次
  • 2: 當它修飾於局部變量的時候,延長生命週期
  • 3:當修飾於全局變量或者函數的時候,限定了做用域

結構體&枚舉&聯合體

//總體爲4字節,緣由在於指針
typedef struct student
{
  int id; //佔位4字節
  char name[20];//佔位20字節
}*STU;//別名是指針4個字節
//總體爲全部成員佔位之和
typedef struct student
{
  int id; //佔位4字節
  char name[20];//佔位20字節
}STU;
//枚舉類型大小始終爲4字節,(猜測:可能性爲枚舉在運算過程當中返回的值爲int類型且只返回一個有關)
//枚舉內元素初始化賦值,但初始化後,後一個元素的下標值取決在於前一個下標的基礎上遞增1
//枚舉內元素若是未初始化,哪麼默認的下標從0開始,能夠把枚舉當成一個另類數組
//枚舉內元素分隔與數組同樣,惟一不一樣的是能夠給元素賦值
//右大括號後也同數組同樣用分號結束

enum time{A,B,C};//枚舉
int  array{1,2,3,4};//數組
//自行體會類似處
//共用體大小取決於成員最大值
union Lian{
  int id;
  char name[20];
};

union Lian test;

test.id = 10;
strcpy(test.name,"TEST");

printf("%d",test.id);//這個會輸出異常
printf("%s",test.name);//這個正常輸出

//=================================

test.id = 10;
printf("%d",test.id);//正常輸出

strcpy(test.name,"TEST");
printf("%s",test.name);//正常輸出

//猜測

typedef&define

  • #define是C指令,用於各類數據類型定義別名與typedef相似
    • typedef僅限於爲類型定義符號名稱
    • #define不只能夠爲類型定義別名,也能爲數值定義別名
    • typedef是由編譯執行解釋的
    • #define語句是由預編譯器進行處理的
  • 示例
#define true 1
#define false 0
#define uint  unsigned
相關文章
相關標籤/搜索