phper 學習c的一點筆記。參考資料 learn C on the mac
圖書地址--http://pan.baidu.com/s/1eQBW2hO
源碼地址--http://pan.baidu.com/s/1eQGGkE2
1,簡單的創建就不講了,從最基本的hello Word 開始吧。
//引入文件
#include <stdio.h>
//main函數
int main(int argc, const char * argv[])
{
// 輸出,尾部換行,最后返回0
PRintf("Hello, World!/n");
return 0;
}
花鍵+R運行代碼輸出結果。
這里講下從終端編譯并運行代碼。
cd 進到根目錄,我們用gcc編譯 -o指定文件名。我們上面的文件名是main.c ,so
gcc -o main.out main.c
ls 查看多了一個 main.out 文件。嗯,還記得我們linux上編譯安裝php么?so ./main.out 來運行文件,輸出 Hello, Word!
好運行完畢。
----------有啥用 ? 恩,原來我們定時執行一段腳本,比如晚上1點,將今天新增加的數據導入solr,原來是用crontab 執行一段php腳本,,現在你可以執行一個編譯過的c,用來解決php解決不了的問題。
2,函數的聲明,來看下面代碼。
#include <stdio.h>
void SayHello( void );
int main (int argc, const char * argv[]) {
SayHello();
return 0; }
void SayHello( void ) {
printf( "Hello, world!/n" );
}
void SayHello 這個函數,除非你寫在int main的上面,否則在用的時候必須先聲明,python,java,Objective-C都是如此。腳本語言除外,js,php不受此限制。
3,接下來講的是1byte=8bit。一個bit只能存0或1。所以1byte=2的8次方,即能存0-127共128個數字。
然后講的是 ++ - -.
int i=2,j;
j = ++i;則j等于3,難理解的是 j= i++;j等于2,i 等于3,而++的優先級高于 = 。
書上有符號優先級圖標,這里不講了。
3,printf( "Looping: %d/n", i );,%d輸出的i 的值,%d是整數類型,類似的還有
%d, %i,代表整數,%f-浮點,%s,字符串,%c,char. %p 指針,%fL 長log,%e科學計數,%g 小數或科學計數
4,下面就是C語言傳的神呼其神的指針了。
指針有太多可說的東西,理解下指針。
#include <stdio.h>
int main( void ) {
int myInt;
int *a;
a = &myInt;
scanf("%d", &myInt);
printf("myInt是 %d/n", myInt);
printf("myInt的指針是 %p/n", a);
printf("通過指針訪問myInt是 %d/n", *a);
}
還有這個,
#include <stdio.h>
void SquareIt( int number, int *squarePtr );
int main (int argc, const char * argv[]) {
int square;
SquareIt( 5, &square );
printf( "5 squared is %d./n", square );
return 0;
}
void SquareIt( int number, int *squarePtr ) {
*squarePtr = number * number;
}
根php里的引用&,用法相似,但引用非指針,php里的引用只不過是變量的別名。
5,數據類型,兩點給我印象深刻,C里沒bool類型,多數情況用1,0表示,。C里也沒有string類型,可聲明char 數組裝string。聲明數組前面可加任何C的合法類型,這里就涉及到占用內存問題了。
6
對文件的操作,基本跟php一樣。
7,第11章可能是本書最有意思的一章了,講了指針的用法,遞歸函數,遞歸加引用的用法,二叉樹,二叉樹的搜索,函數的指針,初始化,
和創建你自己的數據類型,包括上面的string,和bool。
新聞熱點
疑難解答