字元指標賦值_c語言如何利用指標間接賦值
阿新 • • 發佈:2021-01-05
技術標籤:字元指標賦值
我們都知道,指標是指向一段記憶體空間的。而這個記憶體空間也可以存放下一個記憶體空間的地址,這樣一級級的傳遞下去,就變成了多級指標。在C語言中,多級指標是經常會用到的。
多級指標像一把雙刃劍,有利也有弊。你能夠用它完成一些奇淫技巧,也會遇到一些不可捉摸的錯誤。
其中,指標有一個非常重要的作用:間接賦值。
你能夠通過n級指標去修改n-1級指標的內容,甚至直接修改指標所指向的記憶體空間
例如:
你在main函式裡面聲明瞭一個字串指標,然後你想通過呼叫一個外部函式來修改它。這個時候,你就可以將這個字串指標的地址傳遞給函式。這樣,函式的引數就是一個二級指標了,通過這個二級指標,你可以很方便的修改字串的內容。
程式碼如下:
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h> int Test1(char **p1) { char *temp = (char *)malloc(50); strcpy(temp,"hey!"); //間接賦值 *p1 = temp; //更改指標所指向的記憶體空間 printf("T1 %dn",*p1); //打印出地址 } int Test2(char *p2) { strcpy(p2,"goodBy!"); printf("T2 %dn",p2); //打印出地址 ,會發現和實參的地址一樣 } //間接賦值 //利用n級指標 改變n-1級指標的值 int main(int argc,char *argv[]) { char *p = (char *)malloc(100); printf("%dn",p); strcpy(p,"hello"); Test1(&p); //通過n+1級指標直接更改指向的記憶體空間 printf("T1 修改後的值 %sn ",p); Test2(p); //通過同級指標更改內容 printf("T2 修改後的值 %sn ",p); system("pause"); return 0; }
上述程式碼中有兩個函式,其中Test1直接通過n+1級指標修改了p所指向的記憶體空間,而Test2只是修改了p所指向記憶體空間的內容。它們都能夠修改p的內容,但是相對於test2而言,test1更為徹底。當然,具體選用那種方式,還是要根據實際的專案需求來定。
如何編寫生活中的C語言
嵌入式底層開發 - 如何編寫生活中的C語言 - 創客學院直播室www.makeru.com.cn指標
嵌入式開發直播課 - 嵌入式-指標 - 創客學院直播室www.makeru.com.cn指標換裝你還認識嗎
嵌入式底層開發 - 指標"換裝",你還認識嗎? - 創客學院直播室www.makeru.com.cnC語言控制led燈
嵌入式開發直播課 - c語言控制led燈 - 創客學院直播室www.makeru.com.cn