新微赢技术网

标题: [求助]C++中字符指针数组如何理解 [打印本页]

作者: 遗失ぜ的ァ美    时间: 2009-11-4 00:48
标题: [求助]C++中字符指针数组如何理解
#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;
}
}
作者: 斷々弦    时间: 2009-11-4 00:48
编译器是个很智能的东西
就像
char p='a';
cout<<p<<endl;不会输出这个指针的内容(一个地址)而输出这个内容的内容
同样,这个情况和我说的只是都差一个*,所以是一样的原理
你把char*看成一个基本的变量试下
作者: ☆蘫弧ゞ无悔    时间: 2009-11-4 00:48
这样看是可以
问题是从字面上理解指向指针的指针解引用,出来的是一个字符?
作者: 三颗残牙    时间: 2009-11-4 00:48
以下是引用ylxhcm在2006-10-26 18:41:44的发言:
这样看是可以
问题是从字面上理解指向指针的指针解引用,出来的是一个字符

请你说说这个是什么
作者: 寻觅鼠    时间: 2009-11-4 00:48
  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指针变量都可以给他一个字符串.
复制代码

作者: 月半弯    时间: 2009-11-4 00:48
如果输出地址的话可以这样:
cout<<p<<"|"<<p+1<<"|"<<p+2<<endl; //输出地址
cout<<*p<<"|"<<*(p+1)<<"|"<<*(p+2)<<endl; //输出字符串
原因是:cout函数本身就是显示指定的地址空间的值。




欢迎光临 新微赢技术网 (http://bbs.weiying.cn/) Powered by Discuz! X3.2