社区
新手乐园
帖子详情
char *p[2]和char (*p)[2]的区别
tuxiaoxing
2005-12-22 10:55:03
现在,我不知道char *p[2]和char (*p)[2]的区别,请帮忙解释下!
...全文
616
30
打赏
收藏
char *p[2]和char (*p)[2]的区别
现在,我不知道char *p[2]和char (*p)[2]的区别,请帮忙解释下!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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)
const
char
*p,
char
const *p和
char
*const p
区别
(面试题常见)
请看下面三种定义: const
char
*p;
char
const *p;
char
* const p; 请问三者有什么
区别
? 先看第一种,先看p,根据优先级它和*结合,是指针,指向
char
类型,但是
char
前面有一个const修饰,所以p所指向的内容为const类型不可修改。 第二种:由于没有const *的运算,若出现const *的形式,则const实际上是修...
深入理解const
char
*p,
char
const*p,
char
*const p,const
char
**p,
char
*const*p ...
一、可能的组合: (1)const
char
*p (2)
char
const*p (3)
char
*const p (4)const
char
**p (5)
char
const**p (6)
char
*const *p (7)
char
**const p 当然还有在(5)、(6)、(7)中再插入一个const的若干情况,不过分析了以上7中,其他的就可类推了! 二、理解助记法宝:...
char
*p与
char
**p
char
*p与
char
**p
char
str[6]={‘H’,‘E’,‘L’,‘L’,‘O’,’\0’}
char
*p=str
char
** p=&p
char
*p相当于p取了str的地址, * p才是str的内容。而
char
** p相当 * p于取了 str的地址,**p才是str的内容。而p是 * p的地址 假若str是你的钱包,那么
char
* p 中的p在这里就是存...
const
char
*p,
char
const*p和
char
* const p的
区别
const
char
*p;//
char
*p是一个指针,指向
char
类型的,被const修饰,表示指向的内容是无法改变的 //但是,p可以改变
char
const *p;//由于没有const *的指针类型,所以const修饰
char
*p,和const
char
*p的效果一样
char
* const p;//const直接修饰p,表示p无法修改,但是指针指向的内容可以修改 总而言之,由const直接修饰的无法更改 ...
理解一下
char
**p
char
*p[]
一开始学的时候,
char
**p就是指针的指针 那时候没用过 而且也没见过
char
*p[] 就忽略了学习这个东西
char
*p
char
p[] 这两个p 都是字符串首地址
char
**p
char
*p[] 也都是一个p指向一个指针(首地址) 栗子
char
*p[5]就是5个“”字符串 每一个p[i]是一个字符串
char
**p 每一个p[i]也都是一个字符串 int p[3
新手乐园
33,311
社区成员
41,784
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章