本篇的目的是為了說明下面**中的乙個等價關係:
int a=200;
int *p;
p=&a; // *p是和a等價的
int a=999;
int b;
b=a;
(1)a、b都是變數
(2)b=a;是賦值語句;賦值號左邊稱為左值,表示記憶體 b;右邊稱為右值,表示記憶體 a中的資料。
學習指標,有兩個關鍵的運算子:& 和 *。
& 和 * 的含義
表示式解釋
&aa是變數,代表一塊記憶體;&a 表示 a 的記憶體的位址
*pp是指標變數或者位址值
*p 作為左值表示p指向的記憶體
*p 作為右值表示p所指記憶體中的值
int a=999;
printf("%d %d",a,*&a);// 999 999
即*&放在一起,抵消掉了。
(1)&a 表示取變數的位址
(2)*(&a),當其處於賦值號左端,表示一塊記憶體;檔期處於賦值號右邊,表示這塊記憶體中的值
#include
int main(void)
{
int a;
a=100;
printf("%d\n",a);// 100
*&a=200;
printf("%d\n",a);// 200
#include
int main(void)
{
int a,b;
a=100;
b=200;
int *p,*q;
p=&a;
q=&b;
*p=*q;
最難的一句就是
*p=*q;
利用代入法:
因為:p=&a; q=&b;
所以:*p=*q;
等價於:*&a=*&b;
利用抵消原理:
等價於:a=b;
趣解《5秒法則》
舉例 用本書知識使我比別人更高效完成工作或學習任務 開始 5 把鬧鐘放在不容易夠著的地方。因為,關鬧鐘比平時更費勁,會建立痛苦的聯想,而早起可讓您更快完成任務,是快樂的聯想。把鬧鐘放在身旁,還是放在費勁找它的地方,您是否更願意,在費勁關它的時候選擇起床來避免這種痛苦?4 前天晚上寫下1 3個 必做事...
Ubuntu gedit 中文亂碼問題 秒解
在中文支援配置還不完整的ubuntu 14.04中,使用gedit開啟帶有中文字元的檔案有時會出現亂碼的情況,這是由於gedit對字元編碼匹配不正確導致的,解決方法如下 在終端中輸入如下命令,然後重新開啟gedit即可 gsettings set org.gnome.gedit.preference...
指標解引用
所有的變數使用到這一點,在本教程中有乙個共同點 該變數必須先宣告在編譯的時候。這導致了兩個問題 第一,很難有條件地宣告乙個變數,把它在乙個if語句塊之外 在這種情況下,它會超出範圍時,塊的結束 第二,所有陣列的大小必須決定在執行程式之前。例如,以下是不合法的 1 2 3 4 5 cout how m...