设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 1703|回复: 5
打印 上一主题 下一主题

[求助]C++中字符指针数组如何理解

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-4 00:48:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <iostream>
#include <string>
using namespace std;

void print_char(char* array[],int len);

void main(void)
{

char *a[]={"abc","cde","fgh"}; //字符指针数组按指针的定义,a不是指向"abc"的首地址吗?
char* *b=a;
cout<<*b<<"|"<<*(b+1)<<"|"<<*(b+2)<<endl;
//不明白为何输出的不是"abc","cde","fgh"的地址?即为何指向指针的指针为何输出的不是一个指针?反而是一个字符串。


char* test[]={"abc","cde","fgh"};
int num=sizeof(test)/sizeof(char*);
print_char(test,num);
cin.get();

}
void print_char(char* array[],int len
{
for(int i=0;i<len;i++)
{
cout<<*array++<<endl;
}
}
2#
发表于 2009-11-4 00:48:13 | 只看该作者
编译器是个很智能的东西
就像
char p='a';
cout<<p<<endl;不会输出这个指针的内容(一个地址)而输出这个内容的内容
同样,这个情况和我说的只是都差一个*,所以是一样的原理
你把char*看成一个基本的变量试下
回复 支持 反对

使用道具 举报

3#
发表于 2009-11-4 00:48:14 | 只看该作者
这样看是可以
问题是从字面上理解指向指针的指针解引用,出来的是一个字符?
回复 支持 反对

使用道具 举报

4#
发表于 2009-11-4 00:48:15 | 只看该作者
以下是引用ylxhcm在2006-10-26 18:41:44的发言:
这样看是可以
问题是从字面上理解指向指针的指针解引用,出来的是一个字符

请你说说这个是什么
回复 支持 反对

使用道具 举报

5#
发表于 2009-11-4 00:48:16 | 只看该作者
  1. char *a[]={"abc","cde","fgh"}; //字符指针数组按指针的定义,a不是指向"abc"的首地址吗?
  2. 等于
  3. a[0]="abc";
  4. a[1]="cde";
  5. a[2]="fgh";
  6. char *a[3]里面的每个元素都是一个char指针变量,每个char指针变量都可以给他一个字符串.
复制代码
回复 支持 反对

使用道具 举报

6#
发表于 2009-11-4 00:48:17 | 只看该作者
如果输出地址的话可以这样:
cout<<p<<"|"<<p+1<<"|"<<p+2<<endl; //输出地址
cout<<*p<<"|"<<*(p+1)<<"|"<<*(p+2)<<endl; //输出字符串
原因是:cout函数本身就是显示指定的地址空间的值。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 21:24 , Processed in 0.071526 second(s), 9 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表