C語言指針學習,不一樣的代碼分析
C 語言的發展方向
C語言是面向過程的,而C++是面向對象的
C和C++的區別:
C是一個結構化語言,它的重點在於演算法和數據結構。C程序的設計首要考慮的是如何通過一個過程,對輸入(或環境條件)進行運算處理得到輸出(或實現過程(事務)控制)。
C++,首要考慮的是如何構造一個對象模型,讓這個模型能夠契合與之對應的問題域,這樣就可以通過獲取對象的狀態信息得到輸出或實現過程(事務)控制。 所以C與C++的最大區別在於它們的用於解決問題的思想方法不一樣。之所以說C++比C更先進,是因為「 設計這個概念已經被融入到C++之中 」。
C與C++的最大區別:在於它們的用於解決問題的思想方法不一樣。之所以說C++比C更先進,是因為「 設計這個概念已經被融入到C++之中 」,而就語言本身而言,在C中更多的是演算法的概念。那麼是不是C就不重要了,錯!演算法是程序設計的基礎,好的設計如果沒有好的演算法,一樣不行。而且,「C加上好的設計」也能寫出非常好的東西。
小編給大家推薦一個學習氛圍超好的地方,C/C++交流:三四一六三六七二七!一千多小夥伴了吧!所以看到了快點進來吧,不然就滿了!裡面資料都是大家貢獻的,幾百個G了!什麼PDF,零基礎入門,數據結構, 數據分析都是有視頻加源碼的。而已裡面好多學生,工作了的,遇到bug了可以尋求幫助,遇到解決不了的問題也可以和大家交流,從而解決自己多時的問題。這也是一件樂事,我們不做外包,只為共同進步!
下面我們將學習一個新名詞指針
首先java中是沒有指針這個名詞的,
指針是什麼? 指針就是一個地址
地址代表的就是一塊內存空間
指針變數是什麼? 用來存放指針
從上面我們就可以知道java中的內存控制項就是c語言中的指針,下面我們看下代碼:
#include #include main() { int i =5;// 定義一個int 類型的變數i 值 =5 //%#X表示16進位的地址佔位符 printf("i的地址 %#X
",&i); //獲取i的地址,&i就是一個指針 // &i; //定義一個指針變數,數據類型* int* p ; // 指針變數 定義一個int* 類型的變數p //其他兩種表示方式:int *p, int * p; p = &i; // 就是把i的指針賦給指針變數p ,現在指針變數p裡面存放的內容(數據) 就是i的地址 printf("p裡面的內容為(i的地址) %#X
",p); //*號 操作符 // *號的幾種含義 //1 . *號放在某種數據類型的後面,代表就是這種數據類型的指針 int* float* //2 . *號 代表一個乘法符號 3*5 = 15; //3 . *號放在一個指針變數的前面 -> 代表取這個指針變數所存放的地址裡面對應的數據 printf("i=%d
",i); printf("*p的值%d
",*p); // 改變p的值 會不會影響i的值? //p = NULL; // printf("i=%d
",i);//5 // 改變i的值 會不會影響p的值? // i = 100; // printf("p裡面的內容為(i的地址) %#X
",p); // 通過上述實驗 p和 i 是兩個不同的變數 ,改變i的值 不會影響 p的值,同理,更改p的值 也不會影響i的值 // 更改*p的值 會不會影響i的值 // *p = 88; // printf("i=%d
",i); //88 // 更改i的值 會不會影響 *p的值呢? // i = 99; // printf("*p的值%d
",*p); //99 //*p 和i 其實代表的是同一個變數,代表是同一塊內存空間 system("pause"); // 調用windows下系統的命令 讓程序暫停執行 方便觀察程序的執行結果 }123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
從代碼中我們可以知道:
指針就是地址,而c語言中我們在變數前面加上&符號就可以到地址也就是指針如:int i=9;那麼i的指針表示方式是&i
指針變數就是用來存放指針的一個變數,如:數據類型* 變數名;如:int * p 這樣就是一個指針變數,將我們上面的&i=p這樣我們就將i的指針放在了指針變數p中
得到指針變數中的值使用符號*,例如我們將上面指針變數p的指針i的值取出來表示就是:*p
*p 和i 其實代表的是同一個變數,代表是同一塊內存空間
※程序猿大神教你學C語言編程新手入門基礎:指針數組與數組指針
※C語言計算-愛因斯坦數學題
TAG:程序員港灣 |