MST

星途 面试题库

面试题:C语言指针运算基础

假设有两个指针p1和p2,它们指向同类型数组中的不同元素,写一段C语言代码,计算它们之间相隔的元素个数,并解释为什么这样计算。
43.8万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>

int main() {
    int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int *p1 = &arr[3];
    int *p2 = &arr[7];

    // 计算相隔元素个数
    int distance = p2 - p1 - 1;

    printf("两个指针之间相隔的元素个数为: %d\n", distance);

    return 0;
}

解释:在C语言中,当两个指针指向同一数组时,指针相减得到的结果是它们之间相隔的元素个数(这里假设指针类型相同)。p2 - p1会得到从p1p2跨越的元素数,但是这个结果包含了p2所指向的元素,所以要减去1,才能得到真正相隔的元素个数。