字符二維數組char[][]與char**(轉)


原文鏈接:https://blog.csdn.net/njnu_mjn/article/details/16808395?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

參考鏈接:https://blog.csdn.net/fantasy666666/article/details/4422110

 

在C代碼中, 很容易在函數庫中見到類似如下函數原型的聲明:

void f(char** str_list);

於是, 有的程序員就寫了如下的調用代碼:
#define SIZE 100
char a[SIZE][SIZE];
f(a);

這個時候可要小心了, 調用f函數的方式是錯誤的.
如果你是實現f函數的程序員, 你會認為參數str_list實際指向的是什么呢:

str_list是一個指針1, 指向另一個指針2, 指針2指向char類型的變量.

++a; 偏移SIZE*sizeof(char)個字節;

++a[0]; 偏移1個字節;

++str_list; 偏移sizeof(char*)個字節; str_list[0]的值是一個指針, 該值是由a[0][0]~a[0][7]組成的(假設char*占8個字節).

++(*str_list); 偏移1個字節;
————————————————
版權聲明:本文為CSDN博主「MJN」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/njnu_mjn/article/details/16808395


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM