指针指向数组首地址
时间: 2023-07-03 22:23:31 浏览: 49
当我们声明一个数组时,该数组名就是数组的首地址,也就是数组第一个元素的地址。那么如果我们想要使用指针指向数组的首地址,只需要将指针声明为该数组类型的指针即可。例如,对于一个整型数组,我们可以这样声明一个指向该数组首地址的指针:
```c
int arr[5] = {1, 2, 3, 4, 5};
int *ptr = arr; // 指针指向数组的首地址
```
在上述代码中,`arr`是一个包含5个整数的数组,`ptr`是一个指向整型数据类型的指针,我们将`ptr`指向`arr`,也就是指向`arr`的第一个元素的地址,即指向数组的首地址。
相关问题
C语言中指针指向数组名和指针指向数组名地址有什么区别
在C语言中,指针指向数组名和指针指向数组名地址是有区别的。指针指向数组名时,它指向的是整个数组,而指针指向数组名地址时,它指向的是数组的首地址,即第0个元素的地址。因此,指针指向数组名时可以通过指针来访问整个数组,而指针指向数组名地址时只能访问数组的第0个元素。下面是一个例子:
```c
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5};
int *p1 = arr; // 指针指向数组名
int *p2 = &arr[0]; // 指针指向数组名地址
printf("p1[2] = %d\n", p1[2]); // 输出:3
printf("p2[2] = %d\n", p2[2]); // 输出:3
printf("*p1 = %d\n", *p1); // 输出:1
printf("*p2 = %d\n", *p2); // 输出:1
return 0;
}
```
指向指针的指针指向数组
指向指针的指针可以用来指向一个指针变量,而指针变量又可以指向一个数组。以下是一个简单的示例代码:
```c++
#include <iostream>
using namespace std;
int main() {
int arr[3] = {1, 2, 3}; // 定义一个包含三个元素的整型数组
int *p1 = arr; // 定义一个指向数组首元素的指针
int **p2 = &p1; // 定义一个指向指针 p1 的指针
cout << "数组元素:" << endl;
for (int i = 0; i < 3; i++) {
cout << *(p1 + i) << " "; // 输出数组元素的值
}
cout << endl;
cout << "指向指针的指针输出数组元素:" << endl;
for (int i = 0; i < 3; i++) {
cout << *(*p2 + i) << " "; // 通过指向指针的指针输出数组元素的值
}
cout << endl;
return 0;
}
```
输出结果为:
```
数组元素:
1 2 3
指向指针的指针输出数组元素:
1 2 3
```
可以看到,通过指向指针的指针,我们可以访问指针所指向的数组的元素。