关于数组指针的问题?

时间:2018-12-06 08:24:29

标签: c++ c arrays pointers

我试图学习指向数组的指针,但是我无法理解为什么* ptr和ptr打印相同的值

/*Here is the source code.*/

#include<stdio.h> 

int main() 
{ 
    int arr[] = { 3, 5, 6, 7, 9 }; 
    int *p = arr; 
    int (*ptr)[5] = &arr; 

    printf("p = %u, ptr = %u\n", p, ptr); 
    printf("*p = %d, *ptr = %d\n", *p, *ptr);  
    return 0; 
} 

这是我得到的输出的快照:How come ptr and *ptr return same values !!

1 个答案:

答案 0 :(得分:1)

更改打印方式:

printf("p = %p, ptr = %p\n", (void*)p, (void*)ptr); 
printf("*p = %d, *ptr = %p\n", *p, (void*)*ptr); 

因为格式说明符p用于打印指针。此外,当您打算打印指针时,应将其转换为空指针。

可能的输出:

p = 0x7ffed5b62fd0, ptr = 0x7ffed5b62fd0
*p = 3, *ptr = 0x7ffed5b62fd0

现在您在哪里看到它们是相同的。