int arr[] = {1, 2, 3, 4, 5}; int* ptr = arr;什么意思
时间: 2023-08-19 13:43:34 浏览: 219
这段代码定义了一个整型数组arr,该数组包含5个元素,分别是1、2、3、4、5。
同时定义了一个指向整型的指针ptr,将该指针指向数组arr的首地址,也就是arr[0]的地址。这里可以通过ptr访问arr数组中的元素,例如*ptr就会输出arr[0]的值1。同时也可以通过ptr来遍历arr数组,例如ptr++就会指向arr[1]的地址。
相关问题
int (*ptr)[4] = arr;是数组指针吗
是的,int (*ptr)[4] = arr; 是一个指向二维数组的指针,也称为数组指针。数组指针指向的是一个二维数组的首行(第一维),每一行有4个元素(第二维),因此指针类型中需要指定第二维的大小为4。其实,二维数组名在使用时也可以自动转换为指向二维数组首行的指针,例如,如果有一个二维数组arr,可以使用以下方式定义一个指向该数组的指针ptr:
```
int arr[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
int (*ptr)[4] = arr;
```
这里的arr可以自动转换为指向数组首行的指针,因此也可以写成以下形式:
```
int (*ptr)[4] = &arr[0];
```
两种方式定义的ptr的类型都是int (*)[4],都是指向二维数组的指针。
int arr[5] = { 3, 5, 6, 7, 9 }; int *p = arr; int (*ptr)[5] = &arr;为什么*ptr是地址,不是数值呢
### 回答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数组,可以通过解引用和指针的加法运算访问数组中的元素。