字符串指针是指有个指针,他可以指向一个字符串的地址,实质上,还是指向一个字符的地址,字符串不过是多个放在一起的字符的集合。字符指针占4个字节。数组指针?不大明白你的意思,你是指数组名吗,还是指定义了一个指针,把某个字符的地址赋给了它?即一个指向数组的指针?事实上,数组只是我们说的一个概念,在存储时仍然是一个一个数据的存放的,指针在某一时刻都只是指向某个数据,不存在指向整体一说。注:数组名表示数组第一个元素的地址,是常量。不给它额外分配内存。可以参考相关C语言书籍。
//改了两个地方,已标注在下面。#include<stdio.h>#include<string.h>void main(){ char c[10][80]; char *p[10]; int i; void sort(char *p[10]); for(i=0;i<10;i++) p[i]=c[i]; for(i=0;i<10;i++) gets(p[i]); sort(p); for(i=0;i<10;i++) puts(p[i]);//改过!改过!改过!改过!参加排序是是指针,因此要改!}void sort(char *p[10]){ int i,j; char *t; for(i=0;i<10;i++) for(j=0;j<10-i-1;j++)//改过!改过!改过!数组超界! { if(strcmp(p[j],p[j+1])>0) { t=p[j]; p[j]=p[j+1]; p[j+1]=t; } }}