1.第一个知识点
一维数组的数组名的理解
(1)在 C 语言中, arr+1 表示将 arr 的值增加 1 。由于 arr 是存储数组首地址的变量,所以 arr+1 实际上是指数组中下一个元素的地址。
当你对一个指针进行加法运算时,它会根据指针的数据类型进行相应的地址偏移。对于数组指针,增加 1 意味着跳过一个元素的大小。
例如,如果 arr 是一个整数数组的首地址,并且整数占用 4 个字节,那么 arr+1 将指向数组中的下一个整数。
需要注意的是,对指针进行加法运算并不意味着访问到了实际的元素值,而是得到了指向后续元素的地址。要访问具体的元素,通常需要使用指针间接寻址的方式,例如 *arr 表示访问指针 arr 所指向的元素。
此外,在使用指针进行数组操作时,要确保指针的类型与数组元素的类型相匹配,并注意越界访问的问题,以避免出现未定义的行为或错误。
以下是一个示例代码:
#include <stdio.h>
int main() {
int arr[] = {10, 20, 30, 40, 50};
int *ptr = arr;
// 输出第一个元素
printf("Element at %p: %d\n", ptr, *ptr);
// 移动指针到下一个元素
ptr++;
// 输出第二个元素
printf("Element at %p: %d\n", ptr, *ptr);
return 0;
}
(2)课上内容部分
2.第二个知识点
(1)此时需将二维数组看成一维数组的数组,此时的首元素不是数组中的一个元素,而是二维数组中第一行的所有元素,其二维数组的数组名表示第一行数组的地址
注意:虽然第一行数组的地址和第一个元素的地址看起来一样,但意义不同。比如,如果是第一个元素的地址,那么此时arr+1就指的是下一个元素的地址;如果是第一组的元素的地址,那此时arr+1就指的是下一组元素的地址。