若有定义int(*Pt)[3];

若有定义int(*Pt)[3];,则下列说法正确的是A)定义了基类型为int的三个指针变量B)定义了基类型为int的具有三个元素的指针数组ptC)定义了一个名为*pt、具... 若有定义int(*Pt)[3];,则下列说法正确的是
A)定义了基类型为int的三个指针变量
B)定义了基类型为int的具有三个元素的指针数组pt
C)定义了一个名为*pt、具有三个元素的整型数组
D)定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组
答案为D 为什么呢
展开
 我来答
luofl1992
2013-09-13 · TA获得超过710个赞
知道小有建树答主
回答量:561
采纳率:0%
帮助的人:633万
展开全部
(27)若有定义int(*Pt)[3];这种声明可以先把变量名字去掉,也就是int (*)[3],对于*可以这样理解,char *s 等同于char s[],所以可以理解为int pt[][3],也就是D中的解释
而对于int *pt[3],则不相同了,首先pt是一个数组,然后,*用来修饰这个数组,也就是pt是三个元素都是int指针的数组名。
(32)有以下程序
#include
#define N 8
void fun(int *x,int i)
{*x=*(x+i);} /* *(x+i)就是x[i],*x就是x[0],此函数的功能应该很清楚了 */
main()
{int a[N]={1,2,3,4,5,6,7,8},i; /*数组下标从0开始*/
fun(a,2); /*a[0]= a[2] 也就是3*/
for(i=O;i<N/2;i++)
{printf("%d",a[i]);}
printf("\n");

程序运行后的输出结果是 C)3234
(39)有以下程序
#include
main()
{ int a=2,b=2,c=2;
printf("%d\n",a/b&c); /*除法运算符号,c语言运算符优先级先看一看这个地方的
http://baike.baidu.com/view/1501335.htm
先执行a/b结果是1,再执行1&2,这个运算符是按位与运算,转换成二进制两个数是 01和 10,对应位都是1才为1,否则为0,所以结果为0*/
}
程序运行后的输出结果是0
枫若神明
推荐于2018-05-04 · TA获得超过925个赞
知道小有建树答主
回答量:179
采纳率:0%
帮助的人:257万
展开全部
指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针
数组指针:a pointer to an array,即指向数组的指针
还要注意的是他们用法的区别,下面举例说明。
int* a[4] 指针数组
表示:数组a中的元素都为int型指针
元素表示:*a[i] *(a[i])是一样的,因为[]优先级高于*
int (*a)[4] 数组指针
表示:指向数组a的指针
元素表示:(*a)[i]
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不战锤1Q
2013-09-12 · TA获得超过815个赞
知道小有建树答主
回答量:530
采纳率:38%
帮助的人:165万
展开全部
int(*Pt)[3]; 是一个指针,你sizeof(Pt)值会是4(64位时为8)

这样定义的Pt可以这样分配空间 Pt = new int[N][3]; Pt使用时当二维数组
C里面经常这么写的。
C++很少看见
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5d5237ebf
2013-09-13
知道答主
回答量:6
采纳率:0%
帮助的人:9635
展开全部
你可以将他看成 int[3] *pt; 首先他是指针 指针的类型是 int[3] 就是指向的东西 是每行有3个元素的数组 然后就可以理解了 指针数组 数组指针 放在前面的词区分的重点 指针函数 和 函数指针一样 我是这样子理解的 建议你去看下 c指针 有一个Pdf介绍的很全
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式