另一指针问题

tyxsoft 2004-09-04 06:01:59
int *p[n];
是定义一个元素为指针的数组,其中的指针都指向int变量
那么请问
char *p[n];
是什么意思,谢谢
...全文
77 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlueGenie 2004-09-05
  • 打赏
  • 举报
回复
我认为从语法上讲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 ;
}
tyxsoft 2004-09-04
  • 打赏
  • 举报
回复
谢谢大家
jk01dingxian 2004-09-04
  • 打赏
  • 举报
回复
呵呵BlueGenie定义的是一个2维数组.你的呢.也是一个2维数组.字符数组里都是一些字符指针.还不是2维数组吗.
hcj2002 2004-09-04
  • 打赏
  • 举报
回复
有意思
wasoxi 2004-09-04
  • 打赏
  • 举报
回复
定义一个指向char*的数组
yijiuqiliu 2004-09-04
  • 打赏
  • 举报
回复
当然是字符类型,数组中每个元素都是字符指针。
BlueGenie 2004-09-04
  • 打赏
  • 举报
回复
给你看个好玩的:
char (*p)[n] ;
ma100 2004-09-04
  • 打赏
  • 举报
回复
是定义一个元素为指针的数组,其中的指针都指向char变量
tyxsoft 2004-09-04
  • 打赏
  • 举报
回复
阻击顶一下先

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧