面试题答案
一键面试#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int *p1 = &arr[2];
int *p2 = &arr[4];
if (p1 < p2) {
printf("p1 小于 p2\n");
} else if (p1 > p2) {
printf("p1 大于 p2\n");
} else {
printf("p1 等于 p2\n");
}
return 0;
}
指针关系运算的原理
在C语言中,指针存储的是内存地址。当两个指针指向同一个数组时,指针的大小关系反映了它们所指向的数组元素在内存中的位置关系。因为数组在内存中是连续存储的,越往后的元素地址越大。所以如果一个指针指向数组中靠前的元素,另一个指针指向靠后的元素,那么指向靠前元素的指针的值(即地址)小于指向靠后元素的指针的值。这里p1
指向数组的第三个元素,p2
指向数组的第五个元素,p2
指向的元素在内存中的位置更靠后,所以p2
的地址值大于p1
的地址值,即p1 < p2
。