新微赢技术网
标题:
[求助]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
char *a[]={"abc","cde","fgh"}; //字符指针数组按指针的定义,a不是指向"abc"的首地址吗?
等于
a[0]="abc";
a[1]="cde";
a[2]="fgh";
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