C語言學習筆記整理1

2021-08-21 16:47:02 字數 1829 閱讀 5494

以列印hello world為例,介紹以下知識點

1、無論看什麼程式,首先要去找到main函式;

main函式是程式執行的入口

2、#include和#include"stdio.h"的區別

#include告訴編譯器到系統的目錄下面去查詢標頭檔案;

#include"stdio.h"告訴編譯器先到當前目錄下去查詢標頭檔案,如果沒有找到,則到系統的目錄下面去查詢,如果在系統的目錄下面沒有找到,則報警。

3、return關鍵字

4、語句的後面別忘了分號;

5、{}中間的內容是函式的**塊;

用變數a給出下面的定義:

1 乙個整型數

int a;

2 乙個指向整型數的指標

int *a;

3 乙個指向指標的指標,它指向的指標是指向乙個整型數

int **a;

4 乙個有10個整型數的陣列

int a[10];

5 乙個有10個指標的陣列,該指標是指向乙個整型數的

int *a[10];

6 乙個指向有10個整型數的指標

int (*a)[10];

7 乙個指向函式的指標,該函式有整型引數並返回乙個整型值

int (*a)(int);

8 乙個有10個指標的陣列,該指標指向乙個函式,該函式有乙個整型參量並返回乙個整型數

int (*a[10])(int);

左右法則:

首先找到識別符號(a)開始閱讀,先往右看,每當遇到小括號的時候,調轉方向,再往左看!一旦解析完圓括號裡面所有的東西,就跳出圓括號,重複上面的動作,直到整個定**析完畢。

變數的作用域:

區域性變數和全域性變數:

區域性變數的作用範圍:就是它的**塊,也就是靠近它最近的{}的範圍之內。

全域性變數的作用範圍:整個的.c檔案

int a = 0;

解釋:編譯器看到int a = 0;的時候,就會在記憶體空間裡面分配一塊空間,這塊空間的名字就叫a,然後這個空間有多大呢?就是乙個 int 位元組大小用來儲存整型資料。a  = 0 就表明這塊記憶體記憶體空間分配好了之後,就把0這數值儲存到這塊區域裡面!

char a的資料範圍:1111 1111

最大肯定是 正的   ==》最高位,也就是bit7位肯定是0; ==》0111 1111 = 127

最小肯定是負的   ===》最高位,也就是bit7位肯定是1;==》1111 1111 = -127

為什麼有-128?

0000 0000 = +0

1000 0000 = -0

直接把-0變為-128

short b;      ==》數值範圍 -32768 ~ 32767

資料在計算機中儲存都是以補碼的形式儲存的。

unsigned char a = -1;

printf("a = %d\n", a);的值是255的原因。

1 首先-1的補碼:取絕對值為1  ==》0000 0001==》1111 1110  ==》  1111 1111  

==》-1的補碼1111 1111儲存到計算機中

2 給a定的資料型別是unsigned型別,所以最高位不是符號位(不表示正數或負數),是可以參與最後數值範圍計算的。

此時,a 空間存放的是1111 1111,然後列印出來的時候,因為 a 這塊空間儲存值的型別是unsigned char 所以會預設你是正數,按照正數的補碼規則轉化為原碼。

sizeof 的用法注意點:

sizeof 變數;             //對

sizeof (變數名);  //對

sizeof 資料型別;      //錯

sizeof(資料型別);//對

C語言學習筆記整理3

1 記憶體分配 2 關鍵字 記憶體分配 儲存在四塊區域 棧 stack 堆 heap 資料區 data和.bas 常量區 唯讀 1 棧 區域性變數 函式的形參,自動變數 auto修飾 特點 1 棧空間是os 作業系統 自動分配和 程式設計師自己不用管 2 可以被反覆使用 3 棧空間是髒的。儲存上一次...

C語言學習筆記(1)

標頭檔案 silence獨家 標頭檔案之間的相互依賴性導致編譯時間的上公升。過度複雜的標頭檔案包含關係,使得編譯頻繁,而且大大增加編譯的時間。1 標頭檔案中適合放置介面的宣告,不適合放置實現 內部使用的函式 注意是內部使用函式 宣告不應該放在標頭檔案中 內部使用的巨集,列舉,結構定義不應該放入標頭檔...

C語言學習筆記1

1 c語言中gets 與scanf 兩個函式的區別 可以用如下兩種方式輸入字串 char string 15 gets string 遇到回車認為輸入結束 scanf s string 遇到空格認為輸入結束 所以在輸入的字串中包含空格時,應該使用gets輸入。2 break 與continue的區別...