字串陣列使用(二級指標的運用)

2022-10-10 19:30:15 字數 964 閱讀 9685

以一道題目為例

給你乙個整數n,找出1到n各個整數的fizz buzz表示,並用字串陣列answer(下標從1開始)返回結果,其中:

answer[i] == "fizzbuzz" 如果 i 同時是 3 和 5 的倍數

answer[i] == "fizz" 如果 i 是 3 的倍數

answer[i] == "buzz" 如果 i 是 5 的倍數

answer[i] == i (以字串形式)如果上述條件全不滿足

char** fizzbuzz(int n,int* returnsize){}

問題關鍵就在字串陣列存放字串這一塊

char* c[1024];//

表示的是字串陣列,但是需要初始化後才能使用的

所以需要使用二級指標的表達,另一種形式的字串陣列

char** c;//

表示的也是字串陣列,但儲存的方式就不同了

具體實現方式:

char** answer = (char**)malloc(sizeof(char*)*n);//

給answer申請乙個動態記憶體用來存放字串

answer[0] = malloc(sizeof(char)*n*10);//

再賦予足夠的大小存放字串

int i = 0

;

for(i = 1;i//

動態記憶體申請是連續的,所以在相應的位置上存放對應的字串

剩下的就是給對應的位置存放相應的字串

for(i = 1; i <= n; i++)

else

if(i % 3 == 0

)

else

if(i % 5 == 0

)

else

}

二級字元指標

一級字元指標指向乙個字元,一級字元指標的一般有兩種使用場合 指向乙個字元和指向乙個字串。二級字元指標指向的是乙個一級字元指標,如 void main3 下面的草圖簡要說明了上述 的指標指向 在函式中交換兩個字元指標的值 void fun char p1,char p2 void main 下面的草圖...

二級指標運用,常見錯誤

int a 1,b 2 int front a int last b int prev null prev front 如上,prev指向front 如果想讓prev不指向front,而指向last時,不能寫成 這種實際上是取出front,再將last賦值給front prev last 而要寫成 ...

二級指標和字元指標陣列的區別

char str 這是字元指標陣列,每乙個陣列元素是乙個指標變數,而每個指標變數指向字串首字元位址,即是字串的位址。因為每乙個字串都代表的是乙個位址,是字串首字元的位址。字串常量是放在文字常量區,是不可以更改的。而指標陣列str裡面存放的是指向字串位址,它是可變的。如str 0 是可變的,它是指標變...