其實 語言的大多數地方時想通的,再加上PHP是由C寫的,所以我們要學寫C很容易
其實一門語言說來說去就是那些東西,對於C來說
數據類型
基本數據類型short、int、long、char、float、double
構造類型 數組 結構體struct 聯合體union 枚舉enum
指針
空類型 void
宏
語法:
控制語句
跳轉語句
循環
編程範式
內置函數
動態分配內存
數據結構和算法
以上難點在什麼地方呢 是在指針的操作和內存管理。注意:不是說指針的含義很難 ,指針的定義很簡單。
定義:指針是一種數據類型,與其它的數據類型不同的是指針是一種“用來存放地址值的”變量
這個很容易理解 指針是數據類型
int 是用來表示值是整數值的變量
* 是用來表示值是地址值的變量
爲什麼都說指針難 其實難的不是指針 而是指針背後的東西 數據結構和算法 以及彙編
彙編 讓你理解指針的原理
數據結構和算法讓你學習指針的用法
這也是我通過自學的情況下理解的 我自學了彙編 把操作系統和計算機組成原理頁啃了一遍 所以從原理上對指針的理解更直觀
我現在正在學習數據結構和算法(在學習數據結構和算法的時候 其實都是爲節省更少的空間和時間來出發的 就牽涉到內存的管理)
我數學不是很好 不過我不是說想去自己寫一個操作系統 自己寫一個編譯器 我只是想通過學習C|C++ 能去更深入的理解PHP和網絡編程
所以在我目標明確的情況下 我就不存在懼怕 或者 認爲自己基礎不好而不邁出自己去探索更深的東西的接口
下列的事指針的表現形式
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,一個指向指針的指針,被指向的指針指向一個有10個整形數的數組: int (**a)[10];
8,一個指向數組的指針,該數組有10個整形指針: int *(*a)[10];
9,一個指向函數的指針,該函數有一個整形參數並返回一個整形數: int (*a)(int);
10,一個有10個指針的數組,每個指針指向一個函數,該函數有一個整形參數並返回一個整形數: int (*a[10])(int);
11,一個函數的指針,指向的函數的類型是有兩個整形參數並且返回一個函數指針的函數,返回的函數指針指向有一個整形參數且返回整形數的函數: int (*(*a)(int,int))(int);
需要區分的幾個有關指針的問題:
1.const指針與指向const的指針
1)const 指針:指針是const,
比如:int * const x;
表示指針不能修改,不能指向其他對象,但是指針所指向的地址的值可以修改;
2) 指向const的指針:指針指向const對象
比如:const int *x;
或:int const *x;
表示指針可以指向其他對象,但指針所指的當前對象的值不可以修改。
2.函數指針與函數返回指針
1)函數指針:指向函數的指針
比如:int (*p)(int x, int y);
表示p爲一個指針,指向函數的首地址;
2)函數返回指針:函數的返回值爲指針類型
比如:int *p(int x, int y);
表示該函數返回值爲指針類型。
3.數組指針與指針數組
1)數組指針:指向數組的指針
比如:int (*p)[10];
表示一個指針,指向具有10個整形元素的一維數組;
2)指針數組:數組元素爲指針的數組
比如:int *p[10];
表示一個一維數組,元素均爲整形指針。
這裏給個鏈接 也是一個自學C的哥們寫的學習計劃,覺得還不錯:
http://blog.csdn.net/chgaowei/article/details/4731498
再說一次:
我們學習東西,一定要有目的去學習,因爲現在是信息大爆炸時代,我們總感覺自己需要學習的東西太多,沒有目的或者目標的話,你總覺得自己還有好多東西不會,總覺得自己是個菜鳥,這樣會讓自己缺乏信心和學習的動力,所以帶着目標去學習吧,騷年,學東西,不在多而在專,遲早我們也是某一領域的大牛!