C語言指標入門的簡單例項教程

2022-09-29 15:51:19 字數 1656 閱讀 6972

c語言的指標的存在使得c語言對硬體的操控,以及靈活性得到了極大的提高。

但是指標的使用存在著很多難點問題。

#include

#include

//這裡的函式是指標做引數的例子,要知道這個特性可以彌補c語言只能有乙個返回值的特性。

void swap1(int *pa,int *pb)

//main()函式必須要返回乙個數字

int main()

這裡我們先定義兩個整型的變數a,b

然後再定義乙個臨時的指標變數,用來儲存中間變數

然後將b的變數的記憶體位址賦值給t,注意這裡 t  代表的是記憶體位址

然後把b的值給a,再用b接受t位址所儲存的變數, 注意這裡的*t是指t這個位址所指的那個變數。

指標與陣列

其實陣列的int a[10];

裡來說a其實是這個陣列的第乙個元素的a[0]的指標

所以陣列變數本身就是表達位址,所以

int a[10];

int *p=a; //無需用&取位址

但是陣列的單元表達的是變數,需要用&取位址

a==&a[0];

運算子可以對陣列做,也可以對指標做:

p[0] <==>a[0];

這裡的p[0]相當於*p

*a可以表示a[0]

陣列變數是const的指標

const 這個修飾符的作用就是表明乙個變數是指定的值不能改變了

int* const p=&i; //p是const

*q=26;//ok

q++; //error

int ls=58;

int ls1

int* const q=&ls;

*q =10;

*q=20;

// q = &ls1; 這句是不能通過編譯的,因為這個指標是不能指向其他位置的位址

//執行成功說明這裡的指標變數是可以被改變的

ls=36 ;

printf("\n%d",*q);

//然後我們來看另外一種情況

int p1=10;

int p2=20;

int const *t=&p1;

t=&p2;//執行結果為30

//*t =15;這裡是不能通過編譯的,因為這個指標指向的位置儲存的變數是不能賦值改變的。

p2=30;

printf("\n%d",*t);

//關鍵在於這裡的const是在*的前面還是後面決定的

return 0;

void mjyvoslmai(const int*p)

這裡我們傳入了乙個指標,但是在函式裡,是不能改變這個指標所指向的值的

指標的運算

#include程式設計客棧t;

#include

int main()

指標的型別轉換

void*表示不知道指向什麼東西的指標

指標變數的大小是jyvoslm相同的但是,指標是有型別的差別

總之指標的作用

1、需要傳入較大的資料的時候用做引數

2、傳入陣列後對陣列做操作

3、函式返回的結果不止乙個的時候可以用指標帶出(c只能return乙個變數,或者值)

需要要用函式來修改不止乙個變數

4、動態申請記憶體.......

具體的後續會更。

總結

C 簡單的向量用法例項教程

using system class vector 獲取向量的長度 public double getlength 過載運算子 public static bool operator vector a,vector b 過載運算子 public static bool operator vector...

C 中lock死鎖例項教程

這篇文章主要介紹了c 中lock死鎖的用法,對於共享資源的訪問及c 程式設計的安全性而言,有著非常重要的意義!需要的朋友可以參考下 lock的使用原型是 1 234lock x 首先要明白為什麼上面這段話能夠鎖定 其中的奧妙就是x這個物件,事實上x是任意一種引用型別,它在這兒起的作用就是任何執行緒執...

C語言程式中遞迴演算法的使用例項教程

1.問題 計算n!數學上的計算公式為 n!n n 1 n 2 21 使用遞迴的方式,可以定義為 以遞迴的方式計算4!f 4 4f 3 遞迴階段 f 3 3f 2 f 2 2f 1 f 1 1 終止條件 f 2 2 1 回歸階段 f 3 3 2 f 4 4 6 24 遞迴完成 以遞迴方式實現階乘函式的...