注册 登录
编程论坛 C++教室

字符指针数组 取元素问题

xycode 发布于 2011-04-27 10:21, 1322 次点击
程序代码:
int main()
{
    char *name[6]={"one","two","three","four","five","six"};
    std::cout<<std::endl<<*name;   
}


直接cout *name  可以得到第一个单词,但是如果要取第一个单词的 n 字母,要怎么做呢?我试过用二维数组,每行一个单词,但觉得这样很浪费。
一维数组要怎么做呢。
9 回复
#2
Lyone2011-04-27 11:15
int a=1;//第一个单词
int n=2;//第2个字母
cout<<*(name[a-1]+n-1);
#3
mm1010220cs2011-04-27 12:46
你定义的是指针字符数组,这样做: 
int main()
{
    char *name[6]={"one","two","three","four","five","six"};
    std::cout<<std::endl<<*(*name+1);     
}
输出n
#4
xycode2011-04-27 13:34
非常感谢两位...我是综合两位的答案解决的
a=1; //第几个元素
c=2; //第几个字母
std::cout<<*(*name[a-1]+c-1);


一楼的不用*name 的话,一样只会输出第二个元素,two 而不是第一个元素的第二个字母

二楼的不用 [a-1]+c-1 的话,也只是取到第二个元素,而不是第一个元素的第二个字母。

编译器 gcc 4.4.1

[ 本帖最后由 xycode 于 2011-4-27 13:36 编辑 ]
#5
pangding2011-04-27 13:59
虽然你是一维数组,但也可以用 name[0][1] 来取第一个单词的第二个字母。

楼上两位的意见,就是变相地在用我这个代码。
#6
xycode2011-04-27 15:37
以下是引用pangding在2011-4-27 13:59:50的发言:

虽然你是一维数组,但也可以用 name[0][1] 来取第一个单词的第二个字母。

楼上两位的意见,就是变相地在用我这个代码。


试了一下,如果是 *name[0][1] 这样会取到第二个元素 two 的首字母 t
#7
pangding2011-04-27 19:12
回复 6楼 xycode
怎么会!?
程序代码:
#include <iostream>
using namespace std;

int main(int argc, char *argv[])
{
    char *name[] = { "one", "two", "three" };

    cout << name[0][1] << endl;

    return 0;
}
跑完的結果是 n。
#8
mm1010220cs2011-04-27 20:14
    for(i=0;i<6;i++)
        cout<<endl<<*(*(name+i)+1);   
这样你想取哪个元素的哪个字母就都可以了   
#9
xycode2011-04-28 01:50
回复 7楼 pangding
突然又可以了,晕死,下午我确认过3次代码,晚上试试又可以了的?
#10
cnsongzi2011-04-28 14:29
这个正是想要的
1