C语言中指针指向数组名和指针指向数组名地址有什么区别
时间: 2024-01-12 10:02:34 浏览: 82
在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语言 数组指针 指针数组
数组指针是指向数组的指针,它保存的是数组的首地址,并且指向的是整个数组。在C语言中,可以通过在指针名称前加上括号和数组大小的方式来定义数组指针,例如:char (*pOneArray) = &cTestOne。这里的pOneArray就是一个指向char类型的一维数组的指针。
指针数组是一个数组,它的元素都是指针。在C语言中,可以通过在指针名称后加上中括号和数组大小的方式来定义指针数组,例如:int *pArray[10]。这里的pArray就是一个由指向int类型的指针组成的数组。
C语言中指针和数组的加加
在C语言中,指针和数组的加加操作是有区别的。对于指针,加加操作是使指针指向下一个存储单元,即指针的值将增加它所指向类型的大小。而对于数组,加加操作是使数组下标加1,即指向数组的下一个元素。
举个例子来说,假设有一个整型数组int arr,我们可以定义一个指针指向该数组的首地址,如int *p = arr;然后使用指针的加加操作来访问数组元素,如*p++,这将使指针p指向下一个整数,并返回当前指针指向的整数值。
阅读全文