int arrl] = { 3, 5, 6, 7, 9 }; int *p=arr; int (*ptr)[5]=&arr;为什么*ptr是地址,不是数值呢
时间: 2023-08-31 16:38:15 浏览: 136
### 回答1:
很抱歉,你的语句有一些问题。你似乎是在声明一个数组和两个指针,但语法不正确。
这是正确的声明方式:
int arr[5] = { 3, 5, 6, 7, 9 };
int *p = arr;
int (*ptr)[5] = &arr;
简单来说,这里的arr是一个数组,p是一个指向整数的指针,ptr是一个指向数组的指针。
### 回答2:
arr是一个包含5个整数的数组,元素分别为3、5、6、7和9。p是一个指向arr数组的指针,指向arr数组的第一个元素3。ptr是一个指向含有5个整数的数组的指针,这个数组与arr数组具有相同的元素个数。指针ptr指向arr数组。
通过ptr指针,可以通过对ptr进行解引用操作来访问arr数组中的元素。例如,通过*ptr可以访问到arr数组的第一个元素3,通过*(ptr+1)可以访问到arr数组的第二个元素5,以此类推。
使用指针ptr可以方便地对arr数组进行操作,例如可以通过指针算术运算来遍历arr数组中的元素,还可以通过指针操作来修改arr数组中的元素的值。
总之,通过这三个变量可以方便地操作arr数组,实现对数组中元素的访问、修改等操作。
### 回答3:
&arr;
这段代码中,定义了一个整型数组arr,数组中包含了5个元素,即3、5、6、7和9。接着定义了一个指向整型的指针p,并将其指向数组arr的首地址。然后定义了一个指向数组的指针ptr,这个指针指向一个大小为5的整型数组。最后,通过取地址符&将数组arr的地址赋值给指针ptr。
可以说,指针p和指针ptr都是用来访问数组arr的方式,但是二者的类型和用法不同。指针p是一个普通的指针,可以通过指针运算和解引用来访问数组元素。而指针ptr是一个指向数组的指针,其类型为指向大小为5的整型数组的指针,所以它可以通过指针运算来访问整个数组。
例如,通过指针p可以使用*p、*(p+1)、*(p+2)等方式来访问数组元素。而通过指针ptr可以使用*ptr、*(ptr+1)、*(ptr+2)等方式来访问整个数组。
综上所述,指针p和指针ptr都可以用来访问数组arr,但是二者的类型和用法存在一些差别。
阅读全文