august 发表于 2007-7-11 10:17:09

指针数组

像我在MAIN函数里定义了一个二维数组如:str   然后在数组中输入五个国家的英文,
然后建一个函数 如 void sor(char *name[],int n)    接收MAIN函数中的二维数组,再将其按英文字母顺序排序,应该如何排,和如何把二维数组传给形参 *name[] 呢?

shawind 发表于 2007-7-11 11:09:40

晕本来想用c写一个,发现我早已经把c给忘得差不多了,而且机子上连c编译器都没有。
只得用D写了一个,发出来凑贴数,你可以无视之。

import std.stdio;

void main(char[][] args){
   
    for (int i=1; i<args.length; i++){
      writefln(args[]);
    }
   
    writefln("---------Let's sort!---------");
    args.sort;
   
    for (int i=1; i<args.length; i++){
      writefln(args[]);
    }
}

运行结果

Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.

C:\\temp>s.exe show me the money
show
me
the
money
---------Let's sort!---------
me
money
show
the

august 发表于 2007-7-11 11:20:03

我说的是指针数组这里好像没用到吧?
而且我想实现的排序是这样比如:
hongkong
beijing
london
indian

排序后
beijing
hongkong
indian
london
根据ASCII码比大小

duzhi5368 发表于 2007-7-11 11:36:46

你的设计思想就是错误的.按照你的思路,最终得到的代码最多如此.
#include <iostream>
using namespace std;

const int TOTALNUM = 5;

static void __cdecl sor(char **name)
{
    return ;

}

int _tmain(int argc, _TCHAR* argv[])
{
    int i;
    char cStr = {"China","Japan","England","American","Italy"};
    char* pName = {NULL};

    for (i = 0; i < TOTALNUM; ++i)
    {
      pName[ i ]=&cStr[ i-1 ];
    }
    sor(pName);

    cout << pName <<endl;   
    getchar();
    return 0;
}

注意数组作形参,会自动退化为指针.

august 发表于 2007-7-11 11:47:45

你写得太专业了,而且还没学C++看不太懂

duzhi5368 发表于 2007-7-11 13:20:35

#include &quot;stdio.h&quot;


void sor(char **name)
{
// TODO:首字母排序
    return ;
}

int main(void)
{
    int i;
    char cStr = {&quot;China&quot;,&quot;Japan&quot;,&quot;England&quot;,&quot;American&quot;,&quot;Italy&quot;};
    char* pName = {NULL};

    for (i = 0; i &lt; 5; ++i)
    {
      pName[ i ]=&cStr[ i-1 ];
    }
    sor(pName);

printf(&quot;%s&quot;, pName);
printf(&quot;%s&quot;, pName);
printf(&quot;%s&quot;, pName);

    return 0;
}

页: [1]
查看完整版本: 指针数组