int arr[5] = { 3, 5, 6, 7, 9 }; int *p = arr; int (*ptr)[5] = &arr;为什么*ptr是地址,不是数值呢
时间: 2023-09-20 17:05:43 浏览: 65
### 回答1:
&arr;
int arr[5] = { 3, 5, 6, 7, 9 } 是一个数组,包含5个整数。
int *p = arr 是一个指针,指向数组arr的第一个元素。
int (*ptr)[5] = &arr 是一个指针,指向数组arr。
希望这能帮到你。
### 回答2:
&arr;
int arr[5] = { 3, 5, 6, 7, 9 }; 是一个有5个元素的整型数组,元素分别为3、5、6、7、9。这个数组的名称是arr。
int *p = arr; 将arr数组的首地址赋值给指针变量p。p指向arr数组的第一个元素3。
int (*ptr)[5] = &arr; 定义了一个指向类型为int数组的指针ptr,并将arr数组的地址赋给ptr。ptr指向整个arr数组。
这段代码定义了一个有5个元素的整型数组arr,并将其地址赋给指针变量p和ptr。其中,指针变量p指向arr数组的第一个元素3,而指针变量ptr指向整个arr数组。通过p和ptr,我们可以访问和操作数组中的元素。
arr[0]表示数组arr中的第一个元素,即3。通过指针变量p可以直接访问arr[0]:*p即为3。
arr[2]表示数组arr中的第三个元素,即6。我们可以用数组下标的形式访问arr[2]:*(p+2)等于6。
arr[4]表示数组arr中的最后一个元素,即9。我们可以用指针的加法运算访问arr[4]:*(p+4)等于9。
而ptr指向整个arr数组,所以可以通过指针的解引用和指针的加法运算访问arr数组中的元素。
*(*ptr+1)等于5,因为*ptr表示arr[0],而*(*ptr+1)表示arr[0]+1,即5。
*(*ptr+3)等于7,同理,表示arr[0]+3,即7。
总结:指针p指向arr数组的第一个元素,可以用指针的加法运算和解引用访问数组中的元素。指针ptr指向整个arr数组,可以通过解引用和指针的加法运算访问数组中的元素。