更多“PTR运算符有何功能?”相关问题
  • 第1题:

    按照运算符功能划分,运算符!=属于()。

    A.三元运算符

    B.二元运算符

    C.算术运算符

    D.关系运算符


    正确答案:D

  • 第2题:

    下列有关指针的用法中错误的是( )。

    A.int i;int *ptr=&i;

    B.inti;int *ptr;i=*ptr;

    C.int *ptr;ptr=0;

    D.int i=5;int *ptr;*ptr&i;


    正确答案:B

  • 第3题:

    下面函数的功能是______。 exchange(int*ptr1,*ptr2) { int*ptr; ptr=-ptr1; ptr1=ptr2; ptr2=ptr; }

    A.交换*ptr1和*ptr2的值

    B.无法改变*ptr1和*ptr2的值

    C.可能造成系统故障,因为使用了空指针

    D.交换*ptr1和*pb2的地址


    正确答案:B
    解析:函数中将指针变量ptr1和ptr2中的值交换,而不是交换指针ptr1和ptr2所指变量中的值。

  • 第4题:

    以下程序段的输出为( ) static char a[]="language",b[]="progratne"; char *ptr1,*ptr2; int k; ptr1=a;ptr2=b; for(k=0;k<7;k++) if(*(ptr1+k)==*(ptr2+k)) printf("%c",*(ptr1+k));

    A.gae

    B.ga

    C.language

    D.有语法错误


    正确答案:B

  • 第5题:

    请教:2016年计算机二级C++基础练习二单选题15如何解答?

    已知类A有公用数据成员a,并重载了=运算符,且有Aobj2;constA*ptr=newA;,则下列语句错误的是()。

    A.ptr->a=100;

    B.ptr=&obj2;

    C.ptr++;

    D.obj2=*ptr;


      A

      【解析】本题考查const修饰符的作用。注意,const位置不同,其修饰的部分也是不同的。本题中const修饰的是ptr所指的对象本身,所以,ptr可以重新指向新的对象,而ptr->a则无法被更新。

  • 第6题:

    指令“JMP BX”和“JMP WORD PTR [BX]”的功能有何异同?


    正确答案: 上述两条指令都是段内近转移指令,但是偏移地址的来源不同。
    指令“JMP BX”执行时,新的偏移地址在BX寄存器内。 “JMP WORD PTR [BX]”时,目的偏移地址在存储单元中,该存储单元的地址在DS: BX中。

  • 第7题:

    解释IMUL WORD PTR[SI]指令的操作功能。


    正确答案:该指令的操作功能是把AX乘由SI寻址的数据段存储单元的字内容,所得有符号的32位积放入DX和AX中。

  • 第8题:

    当发电机PTR2高压熔断器熔断时,有何现象出现?


    正确答案: 当A1调节器运行时,只发出“A2调节器故障”报警。

  • 第9题:

    已有定义int k=2;int*ptr1,*ptr2;且ptr1、ptr2均已指向变量k,下面不能正确执行的赋值语句是()

    • A、k=*ptr1+*ptr2
    • B、prt2=k;
    • C、ptr1=ptr2
    • D、k=*ptr1*(*ptr2)

    正确答案:B

  • 第10题:

    问答题
    指令“JMP BX”和“JMP WORD PTR [BX]”的功能有何异同?

    正确答案: 上述两条指令都是段内近转移指令,但是偏移地址的来源不同。
    指令“JMP BX”执行时,新的偏移地址在BX寄存器内。 “JMP WORD PTR [BX]”时,目的偏移地址在存储单元中,该存储单元的地址在DS: BX中。
    解析: 暂无解析

  • 第11题:

    问答题
    比较JMP[DI]与JMP FAR PTR[DI]指令的操作有何却别。

    正确答案: JMP[DI]表示间接指向内存区的某地址单元。DI中的内容即转移目标的偏移地址。JMP FAR PTR[DI]是一条段间直接远转移指令,[DI]为目标符号。
    解析: 暂无解析

  • 第12题:

    问答题
    运算符重载实际上通过函数来重新定义运算符的功能,运算符重载的功能直接通过函数调用是否可以?

    正确答案: 运算符重载实际上通过函数来重新定义运算符的功能,运算符重载的功能可以直接通过函数调用。
    解析: 暂无解析

  • 第13题:

    已有定义“int k=2;int*ptr1, *ptr2;”,且ptr1和ptr2均已指向变量k,下面不能正确执行的语句是______。

    A.k=*ptr1+*ptr2;

    B.ptr2=k;

    C.ptr1=ptr2;

    D.K=*ptr1*(*ptr2);


    正确答案:B

  • 第14题:

    按照运算符的功能划分,运算符二二属于( )。

    A.扩展赋值运算符

    B.二元运算符

    C.算术运算符

    D.关系运算符


    正确答案:D
    解析:题目给出的分类条件是运算符的功能,因此选项B首先排除;选项C也容易排除;选项A看上去是正确的答案,其实是不正确的,运算符=虽然在形式上很像扩展赋值运算符,但它是关系运算符。

  • 第15题:

    设int arr[]={6,7,8,9,10};

    int *ptr=arr;

    (ptr++)+=123;

    printf("%d,%d",*ptr,*(++ptr));

    ( )


    正确答案:
     

  • 第16题:

    在整型指针变量ptr1、ptr12的定义中,错误的是 ______。

    A.int x, *ptr1, ptr2;

    B.int*ptrl, x, *ptr2;

    C.int x,*ptrl=&x,*ptr2;

    D.int*ptr1, x,*ptr2=&x;


    正确答案:B

  • 第17题:

    阅读以下说明和C函数,将应填入 (n) 处的字句写在答题纸的对应栏内。4、【说明】 计算机在处理算术表达式时,首先将其转换为后缀表达式。例如,表达式“46+5*(120-37)”的后缀表达式形式为“46 512037-*+”。 计算后缀表达式时,从左至右扫描后缀表达式:若遇到运算对象,则压入栈中;遇,到运算符,则从栈中弹出相关运算对象进行计算,并将运算结果压入栈中。重复以上过程,直到后缀表达式扫描结束。例如,后缀表达式“46 5120 37-*+”的计算过程如下。 a.依次将46、5、120、37压入栈中; b.遇到“-”,取出37、120,计算120-37=83,将其压入栈中: c.遇到“*”,取出83、5,计算5×83=415,将其压入栈中; d.遇到“+”,取出415、46,计算46+415=461,将其压入栈中; e.表达式结束,则计算过程完成。 函数computing(char expr[],int *result)的功能是基于栈计算后缀形式的表达式(以串形式存入字符数组expr)的值,并通过参数result返回该值。函数的返回值为-1/0,分别表示表达式有/无错误。假设表达式中仅包含数字、空格和算术运算符号,其中所有项均以空格分隔,且运算符仅包含加(“+”)、减(“-”)、乘(“*”)、除(“\”)。 函数computing中所用栈的基本操作的函数原型说明如下。 · void InitStack(STACK *s):初始化栈。 · void Push(STACK,s,int e):将一个整数压栈,栈中元素数目增1。 · void Pop(STACK *s):栈顶元素出栈,栈中元素数目减1。 · int Top(STACK s):返回非空栈的栈顶元素值,栈中元素数目不变。 · int IsEmpty(STACKs):若s是空栈,则返回1;否则返回0。【C函数】 int computing (char expr[],int *result) { STACK s; int tnum,a,b; char *ptr; InitStack(&s); ptr=expr;pstr /*字符指针指向后缀表达式串的第一个字符*/ while(*ptr!='\0') { if(*ptr==' ') { /*当前字符是空格*/ (1) ; /*字符指针指向下一字符*/ continue; } else if(isdigit (*ptr)) { /*当前字符是数字,则将该数字开始的数字串转换为数值*/ tnum= (2) ; while (*ptr>='0' && *ptr <='9') { tnum=tnum * 10 + (3) ; ptr++; } Push( (4) ); } else /*当前字符是运算符或其他符号*/ if (*ptr=='+'||*ptr=='-'||*ptr=='*'||*ptr=='/'){ if(!IsEmpty(s)) { a=Top(s);Pop(&s); /*取运算符的第二个运算数*/ if(!IsEmpty(s)) { b=Top(s);Pop(&s);/*取运算符的第一个运算数*/ } else return -1; } else return -1; switch (*ptr) { case '+': Push(&s,b+a); break; case '-':Push(&s,b-a); break; case '*':Push(&s,b*a); break; case '/':Push(&s,b/a); break; } } else return -1; ptr++; /*字符指针指向下一字符*/ }/*while*/ if(IsEmpty(s)) return -1; else{ (5) =Top(s); Pop(&s); /*取运算结果*/ if(!IsEmpty(s)) return -1; return 0; } }


    答案:
    解析:
    (1)ptr++,或++ptr,或ptr=ptr+1,或其等价表示 (2)0,或tnum=0 (3)*ptr-'0',或*ptr-48,或其等价表示 (4)&s,tnum (5)*result
    【解析】

    本题考查栈结构在后缀表达式求值过程中的应用。 利用栈计算后缀表达式时,从左至右扫描后缀表达式:若遇到运算对象,则压入栈中;遇到运算符,则从栈中弹出对应数目的运算对象进行计算,并将运算结果压入栈中。重复以上过程,直到后缀表达式扫描结束,最后栈顶就是表达式的计算结果。 根据题目的说明,由于后缀表达式以字符串方式存储且以空格分隔符号(数值、算符),因此遇到空格字符时,指向表达式中字符的指针ptr应增加1指向后续字符,因此,空(1)处应填入“ptr++”或其等价形式。 下面以字符串“375”为例说明将一个数字串转换为数值的过程。 数值375=((0×10+3)×10+7)×10+5 (1)取得数字字符“3”(ASCII码值为51,字符0的ASCII码值为48)。 mum=0*10+51-48=3; (2)取得数字字符“7” (ASCII码值为55)。 tnum=3*10+55-48=37; (3)取得数字字符“5” (ASCII码值为53)。 tnum=37*10+53-48=375; 以下代码用于将一个数字字符串转换为对应的整数存入tnum,显然,tnum的初始值应为0。 tnum= (2) ; while (*ptr>='0' && *ptr <='9') { tnum=tnum*10+ (3) ; ptr++; } 因此,空(2)处应填入“0”,空(3)所在表达式将数字字符转换为数值,即空(3)处填入“*ptr-48”。 空(4)处用于将转换所得的数值tnum压入栈顶,根据题目中Push的原型“void Push(STACK *s,int e)”,调用时第一个实际参数是STACK类型变量的地址,第二个实际参数是一个整数,因此,空(4)处填入“&s,tnum”。 由于函数computing(ckar expr[],int *result)通过参数result返回该表达式的值,因此需要将存在栈顶的运算结果赋值给result指向的整型变量,即空(5)处填入“*result”。 该题目还考查了参数传递知识,因此考生应通过上机实践加强基本概念的理解和程序设计能力的培养。

  • 第18题:

    指令JMP FAR PTR LOP和“JMP DWORD PTR [DI]”的功能有何异同?


    正确答案: 上述两条指令都是段间远转移指令,但是偏移地址的来源不同。
    指令JMP FAR PTR LOP执行时,目的的偏移地址在转移指令第2、3字节中,段地址在转移指令第4、5字节中。
    指令“JMP DWORD PTR [DI]”时,目的偏移地址在存储单元DS: DI中,目的段地址在存储单元DS: DI+2中。

  • 第19题:

    比较JMP[DI]与JMP FAR PTR[DI]指令的操作有何却别。


    正确答案:JMP[DI]表示间接指向内存区的某地址单元。DI中的内容即转移目标的偏移地址。JMP FAR PTR[DI]是一条段间直接远转移指令,[DI]为目标符号。

  • 第20题:

    运算符重载实际上通过函数来重新定义运算符的功能,运算符重载的功能直接通过函数调用是否可以?


    正确答案: 运算符重载实际上通过函数来重新定义运算符的功能,运算符重载的功能可以直接通过函数调用。

  • 第21题:

    当发电机出现PTR1故障时,有何现象出现?


    正确答案: (1)静态励磁系统如果A1调节器运行,自动切换至A2调节器运行,以出“电压调节器A1故障”;从A1切换至A2调节器运行,发出“电压调节器A1故障”;“从A1切换至A2”光字牌报警;
    (2)无功功率增大,励磁电流、励磁电压增大,过、欠励限制动作或最大励磁电流限制动作,就地报警盘“过、欠励限制”或“最大励磁电流”报警。

  • 第22题:

    问答题
    指令JMP FAR PTR LOP和“JMP DWORD PTR [DI]”的功能有何异同?

    正确答案: 上述两条指令都是段间远转移指令,但是偏移地址的来源不同。
    指令JMP FAR PTR LOP执行时,目的的偏移地址在转移指令第2、3字节中,段地址在转移指令第4、5字节中。
    指令“JMP DWORD PTR [DI]”时,目的偏移地址在存储单元DS: DI中,目的段地址在存储单元DS: DI+2中。
    解析: 暂无解析

  • 第23题:

    问答题
    PTR运算符有何功能?

    正确答案: 可以重新指定存储器操作数的类型,可以重新指定转移指令的转移类型。
    解析: 暂无解析