有关C语言语句和指针数组的题目...请教高手~~~~

int x=1,y=2,z=3;
z+=x>y?++x:++y;
printf(“%d”,z);
Z的值是多少?

若有说明语句: int a[ ][3]={1,2,3,4,5,6,7,8}; ,则a数组的行数为_A_____
A)3 B)2 C)无确定值 D)1
第一题,我问别人,有人说是先Z+=X得到Z=4,再把++Y直接赋给Z.....迷糊了都

第1个回答  2013-06-07
第一题:p[5]是一个指针数组,p[0]指向a[0],p[1]指向a[4],p[2]指向a[8],p[3]指向a[12],p[4]指向a[16]。最后一个输出语句的意思是:i从0到4,输出*(p[i]+1)的值,i=0时输出*(a[0]+1)即a[1]的值,i=1时输出*(a[4]+1)即a[5]的值,i=2时输出*(a[8]+1)即a[9]的值,i=3时输出*(a[12]+1)即a[13]的值,i=4时输出*(a[16]+1)即a[17]的值
第二题: z的值为6:z+=x>y?++x:++y等价于z=z+(x>y?++x:++y)x>y?++x:++y这是一个三目运算,x>y不成立则取++y,则z=z+(++y);即z=3+3=6
第三题:选A定义二维数组可以只对部分元素赋初值而省略第一维的长度,1 2 3为第一行,4 5 6为第二行,7 8 0为第三行
第2个回答  2013-06-07
不好意思,刚才给你说错了,先在我运行了程序,你可以看看结果。
第3个回答  2013-06-07
第一题z=4;第二题应该选A

C语言的数组和指针问题,谢谢高手的解答!
int (B[0])[4];int (B[1])[4];int (B[2])[4]; 这时,对比一下第一题,(B[0])或者B[1] 或者B[2] 代替了原来的B,而原来的B是一个指向大小为四的一维数组的第一个元素,所以这里的B[0],就是一个指向大小为四的一维数组的第一个元素,(其实不单只是0,B[1],B[2]也是...

新手求教关于C语言的数组与指针问题!求高手!
你的疑问非常有理!这题就是胡扯谈,A还能占上边,其它全不占边。题目是“指向数组指针pt的是”——这话都没说清楚,这选项中哪有“指向指针pt”的标识符?可能是想说“指向数组的指针pt是”,那就是A了……B——把数组pt的下标为5的元素强制为int *型指针,这错得太多。C——声明pt是有5个...

C语言选择题,关于指针数组。求详解
int a[2][3]; 定义了一个二维函数,每一维数组有三个元素。int (*pt)[3]; 定义了一个数组指针,也就是定义了一个指向有三个元素的指针,即该指针,每次自加1,地址跳过三个int pt=a; 就是让pt指向a[0],注意a[0]是一个数组地址,里面有三个元素 对于A选项,pt[0][0]是正确的,...

C语言 指针数组的问题
数组类型是int [2][3]。地址类型是 int (*)[3],含义是 指向(含3个整数的一维数组)的常量指针,该指针指向的地址为3个列的一行,所以数组名本身就是行地址。int *p[3]数组类型是 int *[3] ,含义是 :含3个(整数指针)的数组。地址类型是 int **,含义是:指向(整数指针)的常量指针。

C语言中,如何定义一个‘指针数组’,这个‘指针数组’专门用来存放‘数组...
数组指针定义int(*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int(*p)[4];\/\/该语句是定义一个数组指针,指向含4个...

一个奇怪的C语言问题,涉及到指针、数组、堆栈、以及printf,希望C语言大...
数组空间也被释放),printf占用了栈,所以,把原来函数f的栈空间内容修改了。所以,第一条printf语句是可以得到结果的。后面因为arr空间的内容已经被修改,所以,之后的printf语句都得不到结果。顺便再解释一下printf("%s\\n",p);得到的为什么是乱码。正如上面所说,先计算参数p的值保存栈顶。保存的值...

C语言中数组和指针的问题。
首先,不要理会所谓“常指针”的说法。C语言中“常量”有特殊的含义——某些种类的字面量(如类型为int的整数常量);有时也指const限定符;但并不见得和字面上的“不可改变”的“常量”同义(例如const对象事实上是只读对象而不是真正意义上的常量,通过显式转换指针类型可以修改并引起不可预料的...

C语言高手 请告诉我几道简单的题! 我想搞明白 谢谢
1 . 首先我们定义的是一个指针数组,pt[3] 它和数组类似,数组名表示的是第一个字符,而指针名则表示第一个指针,所以pt应该是pt[0],而pt[0]对应的是t[0][]在 *(*(pt+l)+2) 中 先看pt+l 对于数组来说,每一行的内存是连续分配的, 所以pt+l就是pt当前这一行的下一行,即t[1][]...

C语言,指针 与 数组。
2. 用字符指针实现。可以不定义字符数组,而定义一个字符指针。用字符指针指向字符串中的字符。[例8.12]void main(void){char *string="I Love China!";printf("%s\\n",string);} 在这里没有定义字符数组,但C语言对字符串常量是按字符数组处理的,实际上在内存开辟了一个字符数组用来存放字符串...

C语言高手 请告诉我几道简单的题! 我想搞明白 谢谢
第一个题,t是一个数组,pt是一个指针数组,做完循环后,指针数组就指向了t这个数组了。即pt和t应该是一个内容,只不过t是const的。*(pt+1)就是t[1],*(*(pt+l)+2)就是t[1][2]了。第二个题,sum没有初始化,所以答案就选c了。记住一点哦,永远不要使用未初始化的变量!第三个题,...

相似回答