char *p[2]和char (*p)[2]的区别

tuxiaoxing 2005-12-22 10:55:03
现在,我不知道char *p[2]和char (*p)[2]的区别,请帮忙解释下!
...全文
616 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
minico 2005-12-28
  • 打赏
  • 举报
回复
glacier_sandgull 2005-12-28
  • 打赏
  • 举报
回复
指针数组;指向数组的指针。
derekchuang 2005-12-28
  • 打赏
  • 举报
回复
char *p[2]
首先p是一个数组,它是一个含有两个char型指针的数组;

char (*p)[2]
首先p是一个指针,它是一个指向二维数组的首地址。
Behard 2005-12-27
  • 打赏
  • 举报
回复
char array[4][4];
char array_8[8][8];
char *p[4];
char (*t)[4];

p[0] = array[0]; // OK
p[0] = array_8[0]; // OK

t = array; // OK
t = array_8; // Error
Behard 2005-12-27
  • 打赏
  • 举报
回复
char *p[4];
是一个数组,其有四个元素,每个元素都是一个 char 型的指针

char (*t)[4];
是一个指针,其能指向一个二维数组的首地址,但是编译器要求最低一维的元素数量为 4
Behard 2005-12-27
  • 打赏
  • 举报
回复
其实测试一下最清楚了
#include "stdafx.h"
#include <stdlib.h>
#include <string.h>

int main(int argc, char* argv[])
{
char array[4][4];
char *p[4];
char (*t)[4];
int i;

strcpy(array[0], "a0");
strcpy(array[1], "a1");
strcpy(array[2], "a2");
strcpy(array[3], "a3");

t = array;
for(i=0; i<4; i++)
p[i] = array[i];

for(i=0; i<4; i++)
{
printf("P %s .\n", p[i]);
printf("T %s .\n", t[i]);
}

system("pause");
return 0;
}
terryjwf 2005-12-27
  • 打赏
  • 举报
回复
我还是不懂,顶!
Super.Jiju 2005-12-26
  • 打赏
  • 举报
回复
char *p[2]是数组指针
char (*p)[2]是指针数组
over
liuy21 2005-12-26
  • 打赏
  • 举报
回复
mark~
terryjwf 2005-12-26
  • 打赏
  • 举报
回复
谁给咱搞个典型例子说明一下啊
双杯献酒 2005-12-24
  • 打赏
  • 举报
回复
char *p[2] 是2个字符
char (*p)[2] 是2个指针
cky41 2005-12-24
  • 打赏
  • 举报
回复
iicup(双杯献酒)刚好说反了
tuxiaoxing 2005-12-23
  • 打赏
  • 举报
回复
char (*p)[2]:
p是一个指向某个二维(每行有2个char元素)数组的行指针;
如 char b[4][2] = {共8个char元素};
p = b;// p是b的首行地址;
*(p + 1)则是b的第2行地址,依此类推。
ddnlkd1204 2005-12-23
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;

void main()
{
char *p[2] = {"hello"," world!"}; //定义一个一维数组,两个元素,每个元素是一个char *

char (*pi)[2] = (char(*)[2])p[0]; //定义一个指针,指向一个char[2]型数组

cout << ++p[0] << endl; //向后挪1个byte
cout << *(++pi) << endl; //向后挪2个byte
}
shu_yoyo 2005-12-23
  • 打赏
  • 举报
回复
char *p[2] : []优先级大于*,是一个数组,数组里有两个元素,每个元素都是char类型的指针
char (*p)[2]:括号的优先级最高,是一个指针,指针指向有两个char元素的数组。
rainharder 2005-12-23
  • 打赏
  • 举报
回复
mark
zcz0918 2005-12-23
  • 打赏
  • 举报
回复
唉,当时我说type *p[n]是数组被人b4了
Camelh 2005-12-23
  • 打赏
  • 举报
回复
to:Johnny_de(是的,当时就是这样的!)
你的第二个解释有问题!
Rick_ang 2005-12-23
  • 打赏
  • 举报
回复
指针数组和数组指针
Johnny_de 2005-12-23
  • 打赏
  • 举报
回复
我来说下:
char *p[2]表示一个char类型的二维数组,数组的列数为2。
char (*p)[2]中(*p)是一个返回类型为char的函数指针,表示一个2个元素的函数指针数组。
加载更多回复(10)

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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