天天看點

C程式設計語言之一

  %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程式設計語言之一

    amessage[2] = 'G';  //ok

    //pmessage[3] = 'G';  //error

 printf("%c\n", pmessage[3]);

繼續閱讀