C语言关于指针的一题。

#include<stdio.h>
main()
{ int a[]={2,4,6},*prt=&a[0],x=8,y,z;
for(y=0;y<3;y++)
z=(*(prt+y))<x)?*(prt+y):x;
printf("%d\n",z);
}
求答案。求过程!!!

/*答案是6,过程如下*/
#include<stdio.h>
main()
{ int a[]={2,4,6},*prt=&a[0],x=8,y,z; /*定义整形数组a,把2、4、6依次存入数组a的前三个地址
中,定义一个整形指针prt,并把数组a中首地址的值赋值给
prt指向的地址中*/
for(y=0;y<3;y++)
z=(*(prt+y)<x)?*(prt+y):x; //把prt指向的值与x进行比较,把小的值赋值给z;
printf("%d\n",z); //打印出z的值
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-07-07
#include<stdio.h>
main()
{ int a[]={2,4,6},*prt=&a[0],x=8,y,z;
for(y=0;y<3;y++)
z=(*(prt+y)<x)?*(prt+y):x;
printf("%d\n",z);
}

其实你只是多了个括号。。。。答案是6,可以给我看一下实际的问题么?如果我的答案不对的话追问

为什么是6?后面的选择表达式不是最后给Z赋X的值吗?

追答

不是,如果你直接是等号那就直接赋值了,用冒号可不是赋值哟
&是一元运算,取变量地址的操作,间接访问操作用运算符号*.&他返回操作数的内存地址,可以赋给类型合适的指针,仔细看看~

追问

仍然不明白啊。。*(prt+y)<x这是判断式。。然后如果条件为真z=*(prt+y),条件为假z=x
然后z=x=8了。。难道不是这样判断吗。。。

追答

- -汗,好吧,我表示我弱爆了,2楼完爆

第2个回答  2021-04-01

C语言_071_指针的定义和使用_上

c语言选择题(指针)
答案是A,首先定义p是一个指向int类型的指针,不过这个指针没有初始化,也就是没有指向。然后定义了一个int类型的变量i,这里千万不要认为i也是个指针,如果i跟p一样,要在前面也加个*号。然后分析答案: A,这里对p指向的变量进行赋值,这里是相当于初始化了。所以正确。B,不正确\/不合理,因为p的...

C语言关于指针的一题。
\/*答案是6,过程如下*\/ include<stdio.h> main(){ int a[]={2,4,6},*prt=&a[0],x=8,y,z; \/*定义整形数组a,把2、4、6依次存入数组a的前三个地址 中,定义一个整形指针prt,并把数组a中首地址的值赋值给 prt指向的地址中*\/ for(y=0;y<3;y++)z=(*(prt+y)<x)?*(pr...

一道C语言题,关于指针的,有语句:int a[10],则哪一项是对指针变量p的正...
BD是指针类型,数组名是地址,因此选B。

C语言指针的一个问题
(1) 第一个框里的代码 short* temp = *p1; 等价于下面的两条语句:short* temp;temp = *p1;所以,后面 p2=temp;和上面是一致的, 没错.(2)第二个框里的代码 没错, 指针就一个该指向指针, 但是你这里赋值一个值.这种做法是错误的, 不过对C语言来说, "错的"的意思是"不能保证正确", ...

c语言指针选择题求解
1.选C。int a,*p;定义了一个整型变量a以及整型指针p;因此p=&a;p可以存放a的地址。2.选B。int a,*p=&a;因为a是一个变量,不存在*a这一个用法。3.选D。pp未定义错误。C是正确的,p1、p2以及p都是整型指针。4.a是整型变量,p是一级指针a的地址。q是二级指针p的地址。5.q指向null。

问两道有关c语言字符指针的问题,请将程序每一步的意思告诉我,谢谢啦...
第一题答案:B。理由:*s与*t都是取出此时地址存储的值,while()语句里面的意思是,当指针s与t都不为空并且s指向的值等于t指向的值。。。当s或者t为空或者t与s指向的值不同时,while()结束,返回此时s指向的值减去t指向的值,所以为比较两个字符串的大小;第二题答案:A。理由:x的地址赋值...

C语言 关于指针的选择 求教高手
③p1=p2;的意思:【p1指向的地址为p2指向的地址】④为了加深你对指针的理解,我们可以这么认为:p1是一张纸条,上面写着房间号,p2也是。p1=p2;是把p1纸条上的房间号擦掉,改成p2纸条上的房间号。p1=*p2;是把p2纸条上对应的房间号的房间里的所有东西搬到p1纸条写的房间内。⑤将p1的指针指向b,...

关于c语言指针的一些问题。
1、不是说系统64位它就是8字节,而是受限于地址总线的字节宽度,你的地址总线是64位的即指针就是8字节的,但是现在的64位个人pc多半是x86-64能兼容32位的应用程序。2、有,你64 位的机器,它的虚拟内存可以到8TB,如果你在64位机上装个32位的windows你会发现,我的个去……慢的要死(我犯过...

关于C语言指针的一个问题?
这里&p的地址是不会变的,不是打印不出来是没到打印那个语句程序已经崩溃退出了。图中1处指针p没有初始化,它没有指向任何内存单元不能进行图中2处的赋值写入操作,这里会程序崩溃退出。

C语言指针问题
一、如有定义char y[4]= "321"则表达式 *y+2的值是'5' 。分析:y是字符串数组首元素'3'的地址,*y的值就是字符'3',再加上2,就是字符'5'(也可以说是字符'5'的ASC码值)。二、 如有定义char z[2][4]={"MAT", "LAB"};,则表达式*(*z+2)的值是 'T'。分析:z是二维字符...

相似回答