在C语言中,数组和指针是密切相关的。数组名本质上是指向数组第一个元素的指针。通过指针,我们可以方便地访问和操作数组元素。下面是一些关于指针与数组的选择题,让我们一起来看看吧!
- 下列哪个表达式是合法的,用于访问数组的第一个元素?
A. array
B. array[0]
C. (array + 0)
D. *(array++)
正确答案是B. array[0]。在C语言中,数组名本质上是指向数组第一个元素的指针,因此可以使用索引访问数组元素。 - 以下哪个语句是正确的?
A. int ptr = array;
B. int ptr = array;
C. int ptr = array;
D. int ptr = array;
正确答案是A. int *ptr = array;。这里我们将数组名(实际上是指针)赋值给指向整数的指针变量ptr。 - 假设我们有一个整数数组和一个指向整数的指针,哪个语句可以用来将指针指向数组的第二个元素?
A. ptr = &array[1];
B. ptr = array + 1;
C. ptr = &(*array + 1);
D. ptr = &array[1][0];
正确答案是B. ptr = array + 1;。通过将指针加上一个整数,我们可以将指针移动到数组的下一个元素。 - 假设我们有一个指向整数的指针和一个整数数组,哪个语句可以用来将指针所指向的值修改为5?
A. ptr = 5;
B. ptr = 5;
C. (ptr++) = 5;
D. (ptr + 1) = 5;
正确答案是A. ptr = 5;。这里我们使用星号(*)运算符来解引用指针,并将值5赋给指针所指向的元素。 - 假设我们有一个指向整数的指针和一个整数数组,哪个语句可以用来将数组的第三个元素修改为10?
A. ptr = 10;
B. (ptr + 2) = 10;
C. ptr[2] = 10;
D. ptr += 2; *ptr = 10;
正确答案是C. ptr[2] = 10;。这里我们使用索引访问数组元素,并将值10赋给第三个元素。注意,数组索引从0开始计数。 - 假设我们有一个指向整数的指针和一个整数数组,以下哪个语句是错误的?
A. ptr[-1] = 10;
B. ptr[3] = 10;
C. (ptr + 3) = 10;
D. (ptr - 2) = 10;
正确答案是A. ptr[-1] = 10; 和 B. ptr[3] = 10;。在C语言中,数组索引从0开始计数,因此ptr[-1]和ptr[3]都是越界的访问,会导致未定义的行为。
通过以上选择题,我们可以看到指针与数组在C语言中的密切关系。理解这些概念对于编写高效和安全的代码至关重要。请在实践中多加练习,以提高对指针和数组的掌握程度。