1.设变量定义为"int a[2]={1,3},*p=&a[0]+1;"则*p的值是______

如题所述

第1个回答  2019-02-19
1、*p=3
2、"w+"]
3、将str中的字符串输出到fp所指向的文件中(这个就是把HELLO写到PRN文件中)
4、首先*a[2]是一个指针数组就相当于一个二维数组(这个你可以看成是a[2][3]的二维数组),而**p=a就是把这个二维数组的首地址赋值给p
那么p现在指向了二维数组中第一个字符的地址(p现在指向了"one"首地址,现在指向了o)
第一条输出语句:
printf("%s",*(p++)+1);那么*(p++)就是先使用*p然后p在自加一次,这时*p指向o地址然后*p+1那么此时*p就指向了n的地址,因为在输出语句里使用的是%s(它可以从当前地址一直输出到这个串的结尾),因此第一条输出结果就为ne
第二条输出语句:
printf("%c",**p-1);因为p在上一次输出语句中自加了一次,那么这时p就指向了下一个字符串的位置(即:p指向了t),而**p表示的是一个值(即:**p=t),再加上**p-1也就是t-1,而t-1在ASCII码中表示的是s,又因为%c是输出一个字符因此就输出一个s
那么最后结果就是nes了
注:a[0]就是"one"字符串的首地址,a[0][0](或者**p)就相当于o,而*p+1就相当于n了,如果在执行p=p+1这时**p就指向了下一个字符串即:t
a[1]就是"two"的首地址,而a[1][0]就相当于t

C语言理论题
第2题 C:s是一个指向int类型的指针变量,没赋初值的话,*s无意义,故A错,在s没指向一个数组之前,s[0]也是没有意义的,故B错,a是数组a[]的地址,故D错,选C,把a数组的第二个元素的地址赋给指针变量s 第3题 B:声明指针变量p时给他赋值&a[0]+1,故p指向a数组的第二个元素,所以...

1.设变量定义为"int a[2]={1,3},*p=&a[0]+1;"则*p的值是___
int a[2]={1,3},*p=&a[0]+1 首先执行&a[0]+1,既把a[0]的地址加一个sizeof(int)个字节,也就是a[1]所以*p=a[1]=3

设变量定义为“int a[2]={1,3}, *p=&a[0]+1;”,则*p的值是___。具体...
p的值是3。第一条输出语句:printf("%s*p=&a[0]+1 相当于 int *p; p=a+1; 所以答案*p=a[1]=3。&a[0] 就是a数组的首地址 即相当于a 。 a+1就相当于指针下移一个单位。inta[2]={1,3}即a[0]=1,a[1]=3。p=&a[0]+1 这是一个指针变量,*p=&a[0]+1就是a[0]的地...

设有变量定义 int a[3][2]={1,2,3,4,5,6}, (*p)[2]=a;表达式**(p+2...
则p+2就指向了a[3],*(p+2)是a[3]的首地址,**(p+2)就是a[3]的首元素,即为5。

int a={1,2,3,4}; int *p=(int *)((int)a+1); P指向了什么?
1. int a = {}; 貌似应该是int a[] = {};2. "(int)a",已经把a的地址强转成int型数字(32bit),所以“((int)a+1); ”实际指向了整个数组内存块的第二个地址,即a[0]的第二个字节。3.这种用法比较危险,特别是在某些特殊处理器上,如果对32bit(int)变量的访问,访问地址不是4...

全国计算机等级考试三级笔试试题及答案?
D)x=j>0;(16) 设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b\/b的值是( )。A)6.500000 B)6 C) 5.500000 D) 6.000000(17) 已知i、j、k为int型变量,若从键盘输入:1,2,3,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是( )。A) scanf(“%2d%2d%2d”,&i,&...

自考“C语言程序设计”模拟试题一
1、C语言中基本的数据类型有:___、___ 、___ . 2、C语言中普通整型变量的类型说明符为___,在内存中占___字节,有符号普通整型的数据范围是___ . 3、整数-35在机内的补码表示为___. 4、执行下列语句int a=8; a+=a-=a*a; 后,a的值是___. 5、有如下语句:char A[ ]={“I am a studen...

C语言中括号和++的优先级问题
自增运算符分为前缀形(++a)和后缀形(a++),其本质是改变变量的值,然后返回该变量的原始值。部分开发者认为,前缀形式是先++再使用(先变后用),后缀形式是先使用再++(先用后变)。然而,自增运算符只能作用于变量,而不能作用于变量或表达式,如(i+j)++ 是非法的。分析代码示例,`int a...

C语言选择题
40.若有以下定义:int a[]={1,2,3,4,5,6,7,8,9,10},*p=a;则值为3的表达式是(C )。A.*p B.*(p+1)C.*(p+2) D.*(p+3)41.以下性质不是算法特征是( B)。A.有穷性 B.可重用性 C.确定性 D.有0个或多个输入 42.以下关于C语言优点说法错误的是( B)。A....

设变量定义为“int x, *p=&x;”,则&*p相当于___。 A、p B、*p C、x...
因为*p是指针。当x的地址赋值个指针p的时候,他们的地址就一样(数值也是一样)。指针的话,要表示数值的话用用*p,指地址的话,只要p就可以。如果加地址符号&,那就值该指针的地址(&*p),也就是值x的地址。ABCD中,只有A选项表p的地址(即是x的地址)。B、C和D都是表值。希望能帮助你!

相似回答
大家正在搜