指向数组的指针,晕,根本看不懂

napoleonpan1 2003-08-19 07:49:38
//这是老潭写的书上的原题(稍加改动)
//我把程序里所有的*去掉,也觉得没什么不对啊?(可是调试的时候显示的错误满满一页,乱
//七八糟的什么都有.)去掉*之后不就是先定义一个普通的数组,然后再调用这个数组吗?
#include<iostream.h>
#include<string.h>
void f1(char *name[5],int n)
{
int i,j,k;
char *temp;
for(i=0;i<=n-2;i++)
{
k=i;
for(j=i+1;j<=n-1;j++)
{
if(strcmp(name[k],name[j])>0)k=j;
}
temp=name[i];name[i]=name[k];name[k]=temp;
}
}
void f2(char *name[5],int n)
{
int i;
for(i=0;i<n;i++)
cout<<name[i]<<endl;
}
void main()
{
char *name[5]={"follow me","basic","great wall","fortran","computer"};
f1(name,5);
f2(name,5);
}
...全文
32 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hellobcb 2003-08-19
  • 打赏
  • 举报
回复
int a[10], *p; //指向数组元素的指针
p=&a[0];
//.................
int *a[10];//指针数组:由同一数据类型的指针来构成一个数组,即这个数组的元素
//的元素是指针变量。
napoleonpan1 2003-08-19
  • 打赏
  • 举报
回复
好像有点明白了
大家是不是想告诉我:所谓定义一个指向数组的指针,其目的就是意图通过对它的地址的操作来达到对数组本身的各个元素的操作
//在下面这个程序中还有些不明白:
#include<iostream.h>
#include<string.h>
void f1(char *name[5],int n)
{
int i,j,k;
char *temp;
for(i=0;i<=n-2;i++)
{
k=i;
for(j=i+1;j<=n-1;j++)
{
if(strcmp(name[k],name[j])>0)k=j;//此处的a[k],a[j]为什么取的不是
//其地址值?
}
temp=name[i];name[i]=name[k];name[k]=temp;
}
}
void f2(char *name[5],int n)
{
int i;
for(i=0;i<n;i++)
cout<<name[i]<<endl;
}
void main()
{
char *name[5]={"follow me","basic","great wall","fortran","computer"};
f1(name,5);
f2(name,5);
}
lybapple 2003-08-19
  • 打赏
  • 举报
回复
char *name[5]
表明那个数组name的5个成员是指向char的指针。
所以char *name[5]={"follow me","basic","great wall","fortran","computer"};
name【0】的内容就是“follow me”的地址。
那么就可以通过调用name【0】来调用“follow me”了。
如果是char name[5],那么这个数组只能放5个char型的变量。

yakai 2003-08-19
  • 打赏
  • 举报
回复
自己调试一下,看看各个变量的值不久明白了么,多看几遍,多吐几遍就行了
Cstarter 2003-08-19
  • 打赏
  • 举报
回复
您能告诉我name[0]是什么吗,如果这个清楚的话您就不会错了,
name[0]是"follow me"
napoleonpan1 2003-08-19
  • 打赏
  • 举报
回复
上面这个程序的主要目标是比较几个字符串的大小

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧