以列印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的區別...