指標是·學懂c語言最關鍵的部分之一。首先我們先來了解一下指標到底是什麼吧?
指標大小在32位平台下是4個byte,其值為某乙個記憶體的位址。每個位址表示乙個位元組
這裡我們用一段**來說明:
#define _crt_secure_no_warnings 1
#include
#include
int main()
指標的型別:type + * ;
注意:型別決定了開闢空間的大小以及如何解析該變數的內容(從棧角度)。
總的來說:指標就是位址。
指標變數:用來存放位址的變數;
變數指標:即變數的位址;
#define _crt_secure_no_warnings 1
#include
#include
int main()
char* 的指標解引用只能訪問乙個位元組,而int * 的指標解引用訪問4個位元組。
變數做左值必須有儲存空間,做右值必須有內容
接下來借助一些**了解,千萬不要被繞暈嘍,接招吧!
char ch = 'a';
char *cp = &ch;
判斷如下哪個可做左值,哪個可做右值?
&ch; //位址常量,可右不可左 ,ch可以做左值
cp;//變數,可左可右
&cp; //位址常量,可右不可左
*cp + 1;//常量,可右不可左
*(cp + 1); //表示cp之後的一段空間,可左可右
++cp; //c語言變數前置++不能做左值,可做右值
cp++;//c語言變數後置++不能做左值,可做右值
*++cp; //先++再* ch的下乙個空間,可左可右
*cp++; //可左可右,先解引用,再++
++*cp; // 可右不可左
(*cp)++; //可右不可左
++*++cp; //ch的下一塊空間,可右不可左
++*cp++; //可右不可左
接下來寫個例項來說明指標吧!
分別用陣列和指標兩種方式對 10個整數由大到小排序
#define _crt_secure_no_warnings 1
#include
#include
#include
//分別用陣列和指標進行排序
void swap(int *x, int *y)
void bubble_sort(int *a, int sz)//指標
}if (flag == 0)//沒有交換
end--;
}}//void bubble_sort(int *a, int sz)//陣列
//// }
// if (flag == 0)
// return;
// }
//}void print(int a, int sz)
printf("\n");
}int main()
; int sz = sizeof(a) / sizeof(a[0]);
print(a, sz);
bubble_sort(a, sz);
print(a, sz);
system("pause");
return
0;}
由此可見指標比陣列**更加簡潔! Delphi 指標 入門
指標,是乙個無符號整數 unsigned int 它是乙個以當前系統定址範圍為取值範圍的整數。指標對應著乙個資料在記憶體中的位址,得到了指標就可以自由地修改該資料。指標的指標就是用來存放指標所在的記憶體位址的。取址運算子 指標的引用解析操作符 1,型別指標的定義。對於指向特定型別的指標 varptr...
指標入門(四)
指標與函式 函式用來運算元據,改變程式的執行狀態。指標用來根據位址訪問變數,函式名稱本身也是位址,因此你將函式和指標的結合,就能夠實現將複雜資料用指標傳遞和用指標返回,達到動態控制函式執行流的目標。函式和指標的結構,需要通過程式棧的作用。函式和指標的結構主要有兩種方式 1 將指標作為引數,傳遞給函式...
c 指標入門
什麼是指標?其實指標就像是其它變數一樣,所不同的是一般的變數包含的是實際的真實的資料,而指標是乙個指示器,它告訴程式在記憶體的哪塊區域可以找到資料。這是乙個非常重要的概念,有很多程式和演算法都是圍繞指標而設計的,如鍊表。開始學習 如何定義乙個指標呢?就像你定義乙個其它變數一樣,只不過你要在指標名字前...