C程式語言之一

2021-09-06 17:17:51 字數 1571 閱讀 3500

%d  按照十進位制整形數列印;

%o  按照八進位制整形數列印;

%x  按照十六進製制整形數列印;

%c  表示字元

%s  表示字串

%%  表示%本身列印;

%ld  long型輸出

」幻數「:  #define   名字 替換文字

#define  num 100

++i, 比i++更精煉:

兩者的區別:++i,不會產生乙個中間暫存器變數來儲存變數;

i++,產生乙個暫存器變數來儲存i在把i+1賦值給i;

在c語言中,所有引數都是「通過值」傳遞的,也就是說,傳遞給被呼叫函式的引數值存放在臨時變數中,而不是存放在原來的變數中;(是乙個簡單的copy過程);

被呼叫函式不能直接修改主調函式中變數的值,而只能修改其私有的臨時副本的值;

關鍵點:指標

指標只能指向某種特定型別的物件,也就是說,每個指標都必須指向某種特定的資料型別。

(乙個例外:指向void型別的指標可以存放指向任何型別的指標,但它不能間接引用其自身)

字串常量最常見的用法是作為函式引數:

printf("hello,  world\n");

當類似於這樣的乙個字串出現在程式中,實際上是通過 字串指標訪問該字串的;在上述語句中,printf函式接受的是乙個指向字元陣列第乙個字元的指標。也就是說,字串常量可通過乙個指向其第乙個元素的指標訪問;

c語言沒有提供將整個字串作為乙個整體進行處理的運算子;

下面兩個定義之間有很大的差別:

char amesage[ ] = " now  is  the  time ";  //字串儲存在棧區;,函式退出的時候就釋放掉了;在函式呼叫時候要「警惕」;

char *pmessage =  "now is  the  time";   //字串儲存在靜態資料區;在整個應用程式退出時釋放;pmessage指向的是乙個常量;

上述宣告中,amessage是乙個僅僅足以存放初始化字串以及空字元'\0'的一維陣列;陣列中的單個字元可以進行修改;

但amessage始終指向同乙個儲存位置,另一方面,pmessage 是乙個指標,其初值指向乙個字串常量,之後它可以被修改以指向

其它位址。但如果試圖修改字串的內容,結果是沒有定義的;

C語言之一維陣列

在工作中又遇到和陣列,指標有關的 了,我看的有點懵,但是我明白陣列和指標肯定是擁有完全不同的特徵的。先從陣列下手吧,好好回顧一下,查漏補缺。下面定義乙個陣列。int num 3 我們大多數時候都會使用到陣列名。但是你真的清楚陣列名是什麼型別嗎?首先,num 1 毫無疑問是int型別,那麼num是什麼...

程式語言之C語言基礎(一)

c語言中的基本資料型別有 在記憶體中基本型別對應有其位元組長度 在32 位的系統上 short 佔據的記憶體大小是2 個byte int佔據的記憶體大小是4 個byte long佔據的記憶體大小是4 個byte float佔據的記憶體大小是4 個byte double佔據的記憶體大小是8 個byte...

C程式語言之細節 二

昨天的竟然又沒提交上,電腦上還沒備份,鬱悶!1,c語言中,所有函式引數都是通過值傳遞的。傳遞給被呼叫函式的函式值存放在臨時變數中。c語言中,被呼叫函式並不能修改主調函式的引數值,而只能修改私有的臨時副本值。若要呼叫函式修改主調函式引數值,可以採用指標。2,c語言中字串常量以字元陣列的形式儲存。str...