另一指针问题
int *p[n];
是定义一个元素为指针的数组,其中的指针都指向int变量
那么请问
char *p[n];
是什么意思,谢谢
问题点数:20、回复次数:9Top
1 楼tyxsoft(bfmtyx)回复于 2004-09-04 18:02:52 得分 0
阻击顶一下先Top
2 楼ma100()回复于 2004-09-04 18:05:56 得分 2
是定义一个元素为指针的数组,其中的指针都指向char变量
Top
3 楼BlueGenie(蓝色妖精)回复于 2004-09-04 18:50:48 得分 4
给你看个好玩的:
char (*p)[n] ;
Top
4 楼yijiuqiliu(无名者之天下无敌)回复于 2004-09-04 19:30:29 得分 4
当然是字符类型,数组中每个元素都是字符指针。Top
5 楼wasoxi(我就是(没意思~~~))回复于 2004-09-04 19:39:55 得分 4
定义一个指向char*的数组Top
6 楼hcj2002(流浪者·躬自厚而薄责于人 )回复于 2004-09-04 19:49:57 得分 2
有意思Top
7 楼jk01dingxian(蓝光书虫~痛并快乐着~)回复于 2004-09-04 19:57:08 得分 4
呵呵BlueGenie定义的是一个2维数组.你的呢.也是一个2维数组.字符数组里都是一些字符指针.还不是2维数组吗.Top
8 楼tyxsoft(bfmtyx)回复于 2004-09-04 22:50:18 得分 0
谢谢大家Top
9 楼BlueGenie(蓝色妖精)回复于 2004-09-05 15:05:34 得分 0
我认为从语法上讲char* p[n]是定义一个指向字符指针的数组,而char (*p)[n]是定义一个指向一维数组的指针,如:
#include <iostream>
#include <cstdlib>
using namespace std ;
int main() {
char* p[4] ;
char (*p1)[4] ;
cout << "sizeof(p) = " << sizeof(p) << endl
<< "sizeof(p1) = " << sizeof(p1) <<endl ;
system("PAUSE") ;
return 0 ;
}
输出: sizeof(p) = 16 ; sizeof(p1) = 4
从语意上认为char* p[n]不仅可以作为二维数组,作为指向字符串(或字符)的指针数组可能更常见。
#include <iostream>
#include <cstdlib>
using namespace std ;
int main() {
int i, j ;
// 作为指针数组
char* p[] = { "aaaaa", "bbbbbb", "ccccc", "dddddd" } ;
for(i = 0; i < sizeof(p)/sizeof(p[0]); i++)
cout << p[i] << ' ' ;
cout << endl ;
// 作为二维数组
char p1[5][4] ;
char *t = p1[0] ;
for(i = 0; i < 20; i++)
t[i] = 'a'+ i ;
char *p2[5] ;
for(i = 0; i < 5; i++)
p2[i] = p1[i] ;
char (*p3)[4] = p1 ;
for(i = 0; i < 5; i++) {
for(j = 0; j < 4; j++)
cout << p2[i][j] << '-' << p3[i][j] << ' ' ;
cout << endl ;
}
// char **p 作为二维数组
char **p4 = new char*[5] ;
for(i = 0; i < 5; i++)
p4[i] = p1[i] ;
for(i = 0; i < 5; i++) {
for(j = 0; j < 4; j++)
cout << p4[i][j] << ' ' ;
cout << endl ;
}
system("PAUSE") ;
return 0 ;
}
Top




