直接给出demo和内存图进行分析
//打印指针数组
/*
这里为什么要定义为二级指针:首先,数组本身就是一个一级指针,在加上定义的是指针数组,也就是存储的数据是指针,所以是二级指针
*/
void PrintArryData(char** arry, int cnt){
if (arry == NULL)
return;
for (int i = 0; i < cnt; i++){
//arry:是数组的内存块地址,总共有cnt块,arry+i是指向下一个内存块
printf("i= %d value = %s\n", i, *(arry + i));
}
}
//对指针数组进行排序
void SortArryData(char** arry, int cnt){
if (arry == NULL)
return;
char* tmp = NULL;
for (int i = 0; i < cnt; i++){
for (int j = i + 1; j < cnt; j++){
if (strcmp(*(arry + i), *(arry + j)) < 0){
tmp = *(arry + j);
*(arry + j) = *(arry + i);
*(arry + i) = tmp;
}
}
}
}
void main(){
/*
定义了一个指针数组
定义了一个指针数组,数组的有4个内存快,每个内存快的数据类型是指针
可以看图1来认识指针数组的内存结构
*/
char* arry[] = { "rose_grils_1", "ros