指標的入門

2021-08-10 23:09:28 字數 1869 閱讀 2279

指標是·學懂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 指標入門

什麼是指標?其實指標就像是其它變數一樣,所不同的是一般的變數包含的是實際的真實的資料,而指標是乙個指示器,它告訴程式在記憶體的哪塊區域可以找到資料。這是乙個非常重要的概念,有很多程式和演算法都是圍繞指標而設計的,如鍊表。開始學習 如何定義乙個指標呢?就像你定義乙個其它變數一樣,只不過你要在指標名字前...