📜  C |指针基础问题12

📅  最后修改于: 2021-05-25 21:03:15             🧑  作者: Mango

考虑一下此C代码来交换两个整数以及它后面的这五个语句:

void swap(int *px, int *py) 
{ 
   *px = *px - *py; 
   *py = *px + *py; 
   *px = *py - *px; 
}

S1:将生成编译错误
S2:可能会在运行时生成分段错误,具体取决于传递的参数
S3:为所有输入指针正确实现交换过程,这些输入指针引用存储在进程可访问的内存位置中的整数
S4:为某些但不是所有有效输入指针正确实现交换过程
S5:可以加或减整数和指针。

(A) S1
(B) S2和S3
(C) S2和S4

(D) S2和S5答案: (C)
说明: S2:如果指针px或py处的值恒定或px或py指向无效的内存位置,则可能会产生分段错误
S4:可能不适用于所有输入,因为可能会发生算术溢出

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。