Arrays 为什么*双指针值与*指针数组相同?
我有一个关于指向指针数组的双指针的问题。 我不明白为什么*double\u指针值与*pointer\u数组值相同。 我想这句话可能有点意思,“int**pptr=ptr”。Arrays 为什么*双指针值与*指针数组相同?,arrays,c,pointers,Arrays,C,Pointers,我有一个关于指向指针数组的双指针的问题。 我不明白为什么*double\u指针值与*pointer\u数组值相同。 我想这句话可能有点意思,“int**pptr=ptr”。 为什么不是“int**pptr=&ptr”? 请帮帮我 #include <stdio.h> int main(){ // doulble pointer with array. int arr[4] = {1,2,3,4}; int *pt = arr; int **ppt = &
为什么不是“int**pptr=&ptr”? 请帮帮我
#include <stdio.h>
int main(){
// doulble pointer with array.
int arr[4] = {1,2,3,4};
int *pt = arr;
int **ppt = &pt;
printf("%p, %d\n", *ppt, *pt);
// The result is different. *ppt != *pt
// double pointer with pointer array.
int ptr1[4] = {1,2,3,4};
int ptr2[4] = {5,6,7,8};
int ptr3[4] = {9,10,11,12};
int * ptr[3] = {ptr1, ptr2, ptr3};
int ** pptr = ptr;
// Why is it ptr? I thought it should be &ptr.
printf("%p, %p\n", *pptr, *ptr);
// The result is same. *pptr = *ptr
// Why *pptr is the address of ptr1? It thought should be the address of ptr.
return 0;
}
#包括
int main(){
//带数组的双指针。
int-arr[4]={1,2,3,4};
int*pt=arr;
int**ppt=&pt;
printf(“%p,%d\n”,*ppt,*pt);
//结果不同。*ppt!=*pt
//带指针数组的双指针。
int ptr1[4]={1,2,3,4};
int ptr2[4]={5,6,7,8};
int ptr3[4]={9,10,11,12};
int*ptr[3]={ptr1,ptr2,ptr3};
int**pptr=ptr;
//为什么是ptr?我想应该是&ptr。
printf(“%p,%p\n”,*pptr,*ptr);
//结果是一样的。*pptr=*ptr
//为什么*pptr是ptr1的地址?它应该是ptr的地址。
返回0;
}
你知道数组到指针的衰减吗?@tadman你的意思是取消引用而不是衰减?不知道,@tadman这种情况叫做数组到指针的衰减?我会查的。谢谢。为了清楚起见,您会问为什么将ptr
赋值给变量会导致该变量的值为ptr
,而不是&ptr
?这就是作业的工作原理