指针数组:
char *ptr[] = {"I","love","china"};
指针数组是一个数组,除了数组中的元素是指针外,和一般的数组没区别,数组名是个指针常量,不能进行指针运算,不过可以传递给桉树来进行。
键盘输入多个字符串,可以用指针数组实现:
#include <stdio.h>
int main()
{
char *str[100] = {0}; //初始化指针数组为0
int i;
for(i = 0; i < 100; i++)
{
str[i] = (char *)malloc(sizeof(char) * 100); //为str[i]分配足够内存
scanf("%s",&str[i]);
printf("%s\n",str[i]);
free(str[i]); //分配了动态内存后需要释放内存
}
return 0;
}
小测试:
键盘输入几个字符串,并将字符串冒泡排序输出?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, i, j;
char *str[100] = {0};
char *m;
m = "helloworld";
printf("想输入几个字符串:\n");
scanf("%d",&n);
printf("请开始输入字符串:\n");
for(i = 0; i < n; i++)
{
str[i] = (char *)malloc(sizeof(char)*100);
scanf("%s",str[i]);
}
for(i = 0; i < n - 1; i++)
{
for(j = 0; j < n - 1 - i;j++)
{
if(strcmp(str[j],str[j + 1]) > 0)
{
m = str[j];
str[j] = str[j+1];
str[j+1] = m;
}
}
}
for(i = 0; i < n; i++)
{
printf("%s\n",str[i]);
free(str[i]);
}
return 0;
}