MST

星途 面试题库

面试题:C语言指针与数组

请阐述C语言中指针和数组的关系,并举例说明如何通过指针操作数组元素。另外,分析一下以下代码是否正确,如果不正确,指出错误原因并改正: ```c #include <stdio.h> int main() { int arr[5] = {1, 2, 3, 4, 5}; int *ptr = arr; for (int i = 0; i < 5; i++) { printf("%d ", *ptr++); } return 0; } ```
49.5万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
  1. 指针和数组的关系
    • 在C语言中,数组名在大多数情况下会被隐式转换为指向数组首元素的指针。例如,对于int arr[5];arr在表达式中使用时(除了sizeof(arr)这种情况),它会被当作&arr[0],即指向arr数组首元素的指针。
    • 可以通过指针来访问数组元素,因为指针可以进行算术运算,通过指针的移动来访问数组的不同元素。
  2. 通过指针操作数组元素示例
#include <stdio.h>
int main() {
    int arr[5] = {1, 2, 3, 4, 5};
    int *ptr = arr;
    // 通过指针访问并修改数组元素
    for (int i = 0; i < 5; i++) {
        *ptr = *ptr * 2;
        ptr++;
    }
    // 输出修改后的数组元素
    ptr = arr;
    for (int i = 0; i < 5; i++) {
        printf("%d ", *ptr++);
    }
    return 0;
}
  1. 分析给定代码
    • 给定代码是正确的。
    • 代码首先定义了一个包含5个元素的整数数组arr,并初始化了数组元素。
    • 然后定义了一个指针ptr并使其指向数组arr的首元素。
    • for循环中,*ptr++会先返回ptr所指向的元素值(即arr[i]的值),然后ptr再自增指向下一个元素。这样就可以依次输出数组arr的所有元素。所以这段代码能够正确输出数组arr的各个元素值:1 2 3 4 5