天天看點

初識C語言2

數組

一組相同類型元素的集合,下标從0開始

int arr[10] = {1,2,3,4,5,6,7,8,9,10}; 
arr[2] = 3

int i  = 0;
while (i<10)
{
printf('%d', arr[i]);
i++;
}
倒序輸出:i = 9    i--
char ch[4]; = {'a','b','c','d'};
ch[1] = 'b'
           

操作符

算數操作符:

+ - * / %

移位操作符:

右移操作符>> 左移操作符<< // 操作的是二進制數

位操作符:

& 按2進制位與 ^ 按2進制位異或 | 按2進制位或

指派操作符:

= += -= *= /= &= ^= |= >>= <<=

單目操作符:隻有一個操作數

! 邏輯反操作
-    負值
+   正值
&   取位址
sizeof   操作數的類型長度,機關位元組byte
~   對一個數的二進制按位取反
           

//整數再記憶體中存儲的時候,存儲的是二進制

//一個整數的二進制表示有三種形式:原碼 反碼 補碼

//正的整數:原碼 反碼 補碼 相同

//負的整數:原碼 反碼 補碼是計算的

//有符号的整數。最高位為0,表示正數

//有符号的整數。最高位為1,表示負數

int a = 1; // 4byte = 32bit
//00000000000000000000000000000001----原反補碼
int a = -1; // 4byte = 32bit
//10000000000000000000000000000001----原碼
//1111111111111111111111111111111111110----反碼(原碼的符号位不變,其他位取反)
//1111111111111111111111111111111111111----補碼(反碼的二進制序列+1)
//記憶體中存儲整數的時候,存儲的是二進制的補碼
//計算的時候采用的也是補碼
           
--      前置、後置--
++      前置、後置++
*      間接通路操作符(解引用操作符)
(類型)    強制類型轉換
           

關系操作符

>
>=
<
<=
!=  用于測試“不相等”
== 
           

邏輯操作符

&&   邏輯與--并且
||      邏輯或--或者
           

條件操作符(三目操作符)

exp1 ? exp2 : exp3
           

逗号表達式

exp1, exp2, exp3, …expN
           

逗号表達式從左向右計算,整個表達式結果是最後一個表達式的結果

下标引用、函數調用和結構成員

關鍵字

auto  break  case  char  const  continue  default  do  double else  enum 
extern float  for  goto  if  int  long  register   return  short  signed
 sizeof  static struct  switch  typedef union  unsigned  void  volatile  while
           

auto 自動 自動變量 = 局部變量 一般省略

break --停止,中斷 用于循環,switch

continue --繼續 用于循環

const 常屬性

default —預設

do while

enum 枚舉關鍵字

extern 聲明外部符号

goto 語句 --跳轉

register 寄存器

return 傳回—用于函數

signed 有符号

sizeof 計算所占記憶體大小

static 靜态的 用于變量…

struct 結構體關鍵字

switch語句

typedef 類型重定義

union 聯合體,共用體

unsigned 無符号的

void 空

volatile --linux–易變的

關鍵字typedef:類型重命名

typedef unsigned int uint;

int main()
{
	unsigned int num = 100;
	uint num2 = 200;
	
	return 0;
}
           

寄存器是存儲空間,一般內建再CPU上,和記憶體是不同的獨立的存儲空間

計算機的存儲空間:

寄存器

高速緩存(cache)

記憶體

硬碟

網盤

關鍵字register:建議變量存放再寄存器中,編譯器最終決定

static關鍵字:

1.修飾局部變量

void test()
{
	//static修飾局部變量:改變了變量的生命周期,但作用域不改變
	static int a = 1;
	//int a = 1;
	a++;
	printf("%d ", a);
}

 
int main()
{
	int i = 0;
	while (i < 10)
	{
		test();
		i++;
	}

	return 0;
}
           

2.修飾全局變量

//預設一個全局變量具有[外部]連結屬性
//而如果全局變量被static修飾,則這個全局變量隻有内部連結屬性,其他源檔案無法連結到,也無法使用。
           

3.修飾函數

//函數具有外部連接配接屬性的
//而如果函數被static修飾,則這個函數隻有内部連結屬性,其他源檔案無法連結到,也無法使用。
           

define 定義常量和宏

#define NUM 100

#define MAX(X,Y)	(X>Y?X:Y)

int main()
{
	//printf("%d\n",	NUM);
	int a = 10;
	int b = 20;
	int c = MAX(a, b);
	printf("%d\n", c);
	
	return 0;
}
           

繼續閱讀