#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>//void print_array(char *p[], int n)voidprint_array(char**p,int n){int i =0;for(i =0; i < n; i++){printf("%s, ", p[i]);}printf("\n");}voidsort_array(char**p,int n){int i, j;char*tmp;for(i =0; i < n -1; i++){for(j = i +1; j < n; j++){if(strcmp(p[i], p[j])>0){
tmp = p[i];
p[i]= p[j];
p[j]= tmp;}}}}intmain(void){//指针数组,指针的数组,它是一个数组,每一个元素都是指针char *char*p[]={"111111111","000000000","bbbbbbbbb","aaaaaaaaa"};//char **q = { "111111111", "000000000", "bbbbbbbbb", "aaaaaaaaa" }; //err//p[0] = "111111111"printf("sizeof(p) = %lu, sizeof(p[0]) = %lu\n",sizeof(p),sizeof(p[0]));int n =sizeof(p)/sizeof(p[0]);//4printf("before sore:\n");print_array(p, n);sort_array(p, n);printf("after sort:\n");print_array(p, n);return0;}
测试结果
三种二级指针分配内存方式
voidtest(){int i =0;//指针数组char* p1[]={"123","456","789"};//二维数组char p2[3][4]={"123","456","789"};//手工二维内存char**p3 =(char**)malloc(3*sizeof(char*));//int array[3];for(i=0; i<3; i++){
p3[i]=(char*)malloc(10*sizeof(char));//char buf[10]sprintf(p3[i],"%d%d%d", i, i, i);}}