数组和指针的区别C语言
时间: 2023-10-10 13:04:44 浏览: 51
在C语言中,数组和指针都是非常重要的概念,但它们有着不同的含义和用法。
1. 定义方式不同
数组是一组具有相同数据类型的元素的集合,可以通过以下方式定义:
```c
int arr[10];
```
指针是一个变量,它存储了另一个变量的地址。可以通过以下方式定义:
```c
int *ptr;
```
2. 内存占用不同
数组在内存中是一段连续的空间,其大小在定义时就已经确定,且数组名代表了数组首元素的地址。比如上面定义的`arr`数组,它在内存中占用了40个字节的空间(假设int类型占用4个字节),且`arr`代表了该数组首元素的地址。
指针在内存中只占用了一个指针变量的空间,即4个字节或8个字节(取决于操作系统的位数),它存储了另一个变量的地址。比如上面定义的`ptr`指针,它在内存中只占用了4个字节的空间,且它存储的是另一个变量的地址,这个地址可能是数组的首地址,也可能是其他变量的地址。
3. 使用方式不同
数组和指针的使用方式也有很大的不同。
数组可以通过下标来访问元素,比如:
```c
arr[0] = 1;
```
指针可以通过解引用符`*`来访问指向的变量,比如:
```c
*ptr = 1;
```
另外,数组名代表了数组首元素的地址,因此可以将数组名作为指向数组的指针来使用,比如:
```c
int *p = arr;
```
此时指针`p`指向了数组`arr`的首元素,可以通过指针`p`来访问数组的元素。但是,指针变量本身并不代表整个数组。
总的来说,数组和指针在C语言中都有着重要的作用,但是它们的含义、用法和内存占用等方面都存在着巨大的区别。需要根据具体的需求来选择使用哪种数据类型。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)