1.singned char
signed char / char / unsigned char 區別 ,主要在於char,char默認爲是signed還是unsigned 與具體的編譯器有關 ,vc6.0默認爲signed。
2、可以在include 文件裏面的 float.h 中查看 各種有關float的宏定義
3、八進制 0123 、十六進制 0x123
4、enum computer{
lianXiang;
daiEr;
hongJi;
};
用enum來定義 常量的取值範圍 ,這樣computer的取值就只能是 lianXiang daiEr hongJi 裏面的了 ,而lianXiang如果不初始化 ,默認初始化爲0,後面依次增加1;若從daiEr開始初始化 ,則daiEr後面的依次在 daiEr的初值的基礎上加1.
5、在c中 ,字符串常量用“”來定義。
6、 int * a=NULL;
printf("%p\n",a);
%p是以地址的格式輸出
7、char a[4]={'A','B'};//若是a[4] 中一個元素都不初始化,則數組內元素爲亂碼。只要有一個 //初 始 化 則其它未被初始化的都是0
printf("%p\n",a);
printf("%p\n",&a);其中 a指的是數組a的首元素的地址,&a是數組a[]的地址 ,兩個在數值上相等,但是意義不同
如: printf("%p\n",a+1);
printf("%p\n",&a+1); 輸出的地址後移 4個字節 因爲a中含有4個元素。
8、
#define PCHAR char*
typedef char* pchar;//注意分號
PCHAR PX1,PX2;
pchar px1,px2;
char ch='a';
PX1=&ch;
PX2=&ch;//cannot convert from 'char *' to 'char'
px1=&ch;
px2=&ch;
此時px1和px2都是字符指針,因爲typedef是給一個類型起了另一個名字(這裏是將char* 起名爲pchar ,即pchar就是 指向字符的指針 ,所以px1 和px2 都是字符型指針)
而define 只是一個宏替換 (即將程序中 所有的 char* 替換成PCHAR ) 所以相當於是
char* PX1,PX2(char *PX1,PX2); 所以 只有PX1是字符指針,而PX2是字符類型
9、 1)int const * pa;
2)int *const pb;
1)中 const 往後面看 是*pa ,是一個內存的表示,所以pa這個指針 指向的內存單元的內容不可變
10、static 修飾的東西 放到靜態區中,隨程序運行到結束,但是不一定是在整個程序中都可見
1)static 修飾函數,
2)static 修飾變量
文件級: 存放在靜態區,被修飾後 還是在靜態區
塊級:本來是存放在 堆棧中,被static修飾後 存放在靜態區 ,生存期爲程序級,可 見 性 還是塊級
函數參數:不可以被static修飾
11、linux 下 gcc和cc 都是編譯c語言程序用的
g++是用來編譯c++程序的
2)rm-f 刪除文件的名字
12、預處理(頭文件,宏定義,註釋:註釋用一個空格來代替) ----編譯---鏈接
13、 ??(------[
??<------{
/a可以發出蜂鳴
14、volatile :不允許編譯器進行類型優化
15、while(1)
{
break; //可以跳出循環
}
while(1)
{
continue;//跳不出去
}
16、書寫規範:switch 語句中 一定要寫上 default ,即使default 語句沒有 起作用的語句
17、