社区
新手乐园
帖子详情
char *p[2]和char (*p)[2]的区别
tuxiaoxing
2005-12-22 10:55:03
现在,我不知道char *p[2]和char (*p)[2]的区别,请帮忙解释下!
...全文
689
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)
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;const
char
* const p;
const
char
*p;
char
* const p;const
char
* const p; 前言 const 限定符,它把一个对象转换成一个常量,而常量不能修改。 一、 const
char
*p; const修饰*p,所以 *p在等号左边的操作都是不合法的,因为 *p不可变,此时不能用 *p来修改(eg: *p = 10; 不合法),但是p可变,p可以转向。 二、
char
* const p; const修饰p,所以 p在等号左边的操作都是不合法的,因为 p不可变,此时不能用 p来修
深入理解const
char
*p,
char
const*p,
char
*const p,const
char
**p,
char
const**p,
char
*const*p,
char
**const p
深入理解const
char
*p,
char
const*p,
char
*const p,const
char
**p,
char
const**p,
char
*const*p,
char
**const p 一、可能的组合: (1)const
char
*p (2)
char
const*p (3)
char
*const p (4)const
char
**p (5)
char
const
char
*p,
char
const *p和
char
*const p的
区别
Copyright © 1999-2020, CSDN.NET, All Rights Reserved 搜索博文/帖子/用户 登录const
char
*p,
char
const *p和
char
*const p
区别
(面试题常见) 原创2018-07-27Lawrence_121 码龄3年关注请看下面三种定义:const
char
*p;
char
const p;
char
* const p;...
char
*p 和
char
*p[]
char
*p 和
char
*p[]
区别
新手乐园
33,318
社区成员
41,771
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章