单选题
有以下程序
有以下程序
void fun1(char *p)
{char *q;
q=p;
while(*q!='\0')
{ (*q)++; q++;
}
main()
{char a[]={"Program"}, *p;
p=&a[3];fun1(p);printf("%s\n",a);
}
程序执行后的输出
A
Prohsbn
B
Prphsbn
C
Progsbn
D
Program
答案解析
正确答案:A
解析:
不好理解
考核的知识点是指向数组的指针作为函数的参数及指针的运算,如果形参数组中的元素发生变 化,实参也将发生相应变化。指针 p 指向数组的第三位地址(即字符“g”的地址),q=p 也就相当于指针q 指向数组的第三位地址。表达式(*q)++,首先根据()的优先级得到 a[3]的值“g”,再进行加 1 运算,所以g 也就变成了 h;表达式 q++是将地址加 1,也就是指向下一个地址 a[4]。然后再执行 while()语句,直到遇 到'\0'结束循环,返回形参。
考核的知识点是指向数组的指针作为函数的参数及指针的运算,如果形参数组中的元素发生变 化,实参也将发生相应变化。指针 p 指向数组的第三位地址(即字符“g”的地址),q=p 也就相当于指针q 指向数组的第三位地址。表达式(*q)++,首先根据()的优先级得到 a[3]的值“g”,再进行加 1 运算,所以g 也就变成了 h;表达式 q++是将地址加 1,也就是指向下一个地址 a[4]。然后再执行 while()语句,直到遇 到'\0'结束循环,返回形参。
相关题目
单选题
若8259工作在自动循环方式下,当前IR3上的中断请求已执行并返回,则8个中断源中优先级最高的是( )。
单选题
实模式下,对于80486微机系统,其中断类型码为18H的中断向量在内存中存放的物理地址首地址为( )。
单选题
下列引起CPU程序中断的四种情况中,哪个需要由硬件提供中断类型码( )。
单选题
设某中断服务程序在中断向量表的地址为0:70H,则该中断的中断类型码应是( )。
单选题
实模式下,80486管理的内存空间中,地址为00000H~003FFH中存放着( )。
单选题
80486CPU响应中断时,自动压入堆栈的信息是( )。
单选题
欲读取8259A的IMR内容,可( )。
单选题
设8259A当前最高优先级为IR5,如果要使该中断在下一循环中变为最低优先级,则OCW2应设为( )。
单选题
8086CPU的引脚中,接有硬中断信号的引脚有( )。
单选题
PC机中,确定硬中断的服务程序入口地址的是( )。
