不多说了直接上代码吧
1.整型的可变长度的数组
#include
main(){
/* 测试可变长度的数组(整型的) start */
int m;
int *a,*b,*a_same,*b_same;
printf("输入数组a的个数:\n");
scanf("%d",&m);
a = (int*)malloc(m*sizeof(int));//动态分配数组
printf("输入实际填值的数量:\n");
int v_num;
scanf("%d",&v_num);
int i;
for(i=0;i
if(i
scanf("%d",a+i);
}
if(i>=m){
a=(int*)realloc(a,(i+1)*sizeof(int));
scanf("%d",a+i);
}
}
printf("v_num是%d\n",v_num);
printf("%d",a[3]);
/* 测试可变长度的数组 end */
return 0;
}
2.可以变长度的字符串数组(索引数组)
#include
#include
#include
#define N 4 /*根据字符串的长度排序,由长到短*/
void sort(char *p[N]);
void main() {
#if 0
char str[N][50];/*保存字符串的二维数组,每个字符串的最大长度是50*/
int i;
char *p[N];/*声明指针数组,保存二维数组每一行的地址*/
printf("请输入%d个字符串:\n",N) ;
#else
int i;
char *p[N];/*声明指针数组,保存二维数组每一行的地址*/
char **str=(char**)malloc(sizeof(char*)*N);
for( i=0;i
printf("请输入%d个字符串:\n",N) ;
#endif
for(i=0;i
scanf("%s",str[i]);
// gets(str[i]);/*初始化二维数组*/
for(i=0;i
/*初始化指针数组*/
p[i]=str[i];
}
sort(p);
system("pause");
}
void sort(char *p[N]) {
int i,j;
char *t;
printf("由长到短排序:\n");
for(i=0;i
for(j=i+1;j
if(strlen(p[i])
t=p[i];
p[i]=p[j];
p[j]=t;}
}
for(i=0;i
puts(p[i]);/*输出排序后的结果*/
}