一天練習一個小C/C++程式(二) 指標到底該如何使用
阿新 • • 發佈:2019-02-06
以前寫C基礎的時候,寫過很多次指標的例子,那到底指標在C專案中會怎麼應用呢?
通常有兩方面:
一:函式的傳參:我們已經說過,函式傳參除非傳的是記憶體地址,要不修改後的值對傳入之前的值沒有影響。
二:跨函式修改值: 其實我覺得這個和第一條一樣。。都是為了使其在另一個函式的修改無論在哪都生效。
三:定義資料結構。
其實可以發現,需要直接操作記憶體的情況下,就需要使用指標,這樣指標才有意義。
例子:
#include<stdio.h> #include<stdlib.h> #include<string.h> #include <conio.h> /** * 定義一個通用換值函式 * 因為要通用,所以定義為void型別指標。void指標也叫做萬能指標,因為它型別不確定,也不需要確定,僅直接代表記憶體首地址 */ void swap(void *x,void *y,size_t sz){ void* temp = malloc(sz); //memcpy函式:將第二個引數的指標對應的記憶體中的資料覆蓋第一個引數指標對應的記憶體中資料,第三個引數為資料的長度 memcpy(temp,x,sz); memcpy(x,y,sz); memcpy(y,temp,sz); } int main(){ //int型別互換測試 int x = 1; int y =5; swap(&x,&y,sizeof(int)); printf("%d\n",x); printf("%d\n",y); //double型別互換測試 double dx = 22.22; double dy =55.55; swap(&dx,&dy,sizeof(double)); printf("%f\n",dx); printf("%f",dy); getch(); return 0; }
結果:
而且我覺得繞什麼3,4,5,6級指標更本沒什麼意義,我覺得大於等於三級指標應該不要出現,這隻會讓程式難以理解,如果你非要寫一個三級指標,那麼,或許你的解決辦法並不是最優的,你需要再仔細想想了。指標其實挺有意思的。。。