寫一篇好博文很難
為了更好的理解指針中幾個不容易清楚的概念:指針數組,數組指針,函數指針,指針函數,利用函數指針回調函數。
1.使用指針數組,用不定長的字符串初始化,最後一個字符串以@結尾,輸出所有的字符串,並刪除最後的@字符。
例如:
輸入:aaaaa bbbbb abcdefg asdf@
輸出:
aaaaa
bbbbb
abcdefg
asdf
1 #include <stdlib.h>
2 #include <string.h>
3 int main(int args,const char *argv[])
4 {
5 char *p[10] = {NULL};
6 int cnt = 0;//記錄輸入了多少個字符串
7 //申請堆內存空間
8 for(int i=0;i<10;i++)
9 {
10 //申請一個100個char類型的內存空間
11 p[i] = (char *)malloc(100*sizeof(char));
12 //判斷申請成功
13 if(!p[i])
14 {
15 return -1;
16 }
17 scanf("%s",p[i]);
18 cnt++;
19 //判斷字符串最後一個字符是否位 '@' 是:替換位'\0'
20 int len = (int)strlen(p[i]);
21 if(*(*(p+i)+(len-1)) == '@')
22 {
23 *(*(p+i)+(len-1)) = '\0';
24 }
25 // if(p[i][len-1] == '@')
26 // {
27 // p[i][len-1] = '\0';
28 // }
29 //當讀取到單個字符位'\n'時,跳出循環
30 if(getchar() == '\n')
31 {
32 break;
33 }
34 }
35
36 for(int i=0;i<cnt;i++)
37 {
38 printf("%s\n",p[i]);
39 }
40 return 0;
41 }
2.
利用函數指針回調函數
隨意定義三個函數,利用函數指針調用該三個函數,輸入一個n,打印n次該函數
