MST

星途 面试题库

面试题:C语言指针关系运算的基本应用

假设有两个指向同一数组的指针p1和p2,p1指向数组的第三个元素,p2指向数组的第五个元素。请编写代码判断p1和p2的大小关系,并输出结果。同时解释这里指针关系运算的原理。
46.8万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#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