#define _crt_secure_no_warnings
#include#include#includevoid print_array(char **a, int n)
printf("\n");
}void sort_array(char **a, int n)
} }}// 讓p指向一段記憶體,讓這塊記憶體儲存內容
int main(void)
strcpy(p[0], "aa"); //分配的內容儲存"aa", 元素是char
strcpy(p[1], "bb");
strcpy(p[2], "cc");
printf("排序前:");
print_array(p, n);
sort_array(p, n); //選擇法排序
printf("排序後:");
print_array(p, n);
//釋放堆區空間
for (i = 0; i < n; ++i)
free(p);
p = null;
printf("\n");
system("pause");
return 0;
}
函式的封裝
#define _crt_secure_no_warnings
#include#include#includevoid print_array(char **a, int n)
printf("\n");
}void sort_array(char **a, int n)
} }}void get_mem(char **p, int n)
strcpy(p[0], "aa"); //分配的內容儲存"aa", 元素是char
strcpy(p[1], "bb");
strcpy(p[2], "cc");
}char ** get_mem2(int n)
strcpy(p[0], "aa"); //分配的內容儲存"aa", 元素是char
strcpy(p[1], "bb");
strcpy(p[2], "cc");
return p;
}void get_mem3(char *** tmp, int n)
strcpy(p[0], "aa"); //分配的內容儲存"aa", 元素是char
strcpy(p[1], "bb");
strcpy(p[2], "cc");
*tmp = p; //間接賦值,很重要
}void free_mem(char ** p, int n) //釋放堆區記憶體
int i;
//釋放堆區空間
for (i = 0; i < n; ++i)
free(p);
p = null;
}void free_mem2(char *** tmp, int n) //釋放堆區記憶體
int i;
//釋放堆區空間
for (i = 0; i < n; ++i)
free(p);
p = null;
*tmp = null;
}// 讓p指向一段記憶體,讓這塊記憶體儲存內容
int main(void)
// 讓p指向一段記憶體,讓這塊記憶體儲存內容
int main01(void)
strcpy(p[0], "aa"); //分配的內容儲存"aa", 元素是char
strcpy(p[1], "bb");
strcpy(p[2], "cc");
printf("排序前:");
print_array(p, n);
sort_array(p, n); //選擇法排序
printf("排序後:");
print_array(p, n);
//釋放堆區空間
for (i = 0; i < n; ++i)
free(p);
p = null;
printf("\n");
system("pause");
return 0;
}
指標與二級指標
int num 10 int p1 int p2 p1 指標的指向結構如下圖所示 0x4000 0x3000 p2 0x2000 p1 num p2 表示的是儲存p2指標的位址 p2 表示的是p2指向的位址,即指標p1存放的位址 p2 表示指標p2指向位址中所存的值,即指標p1指向的位址,即變數nu...
一級指標二級指標
例如 int p null int代表指標p指向的資料型別是int型,代表這是乙個指標變數,1 指標變數儲存的內容是指向的變數的位址 2 在使用sizeof判斷指標的位元組數時,在32位機器上為4個位元組,在64位機器上為了相容,仍然是四個位元組大小 3 小知識點,不同型別的指標除了指向的變數資料型...
二級指標 P
首先理解幾個概念 1.對於乙個普通變數,進行引用操作,得到的是一級指標。如int a 0 int p a,則 a就是一級指標。因為 a的值就是a的位址,p的值也是a的位址,則 a和p就是一級指標變數 簡略為指標 對 a進行解引用操作,int b a 這b等於0.2.對於普通變數作為形參傳遞到函式內部...