关于指向数组的指针的问题? [复制]

Posted

技术标签:

【中文标题】关于指向数组的指针的问题? [复制]【英文标题】:Issue regarding pointer to array? [duplicate] 【发布时间】:2018-12-06 08:24:29 【问题描述】:

我试图学习指向数组的指针,但我无法理解为什么 *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; 
 

这是我得到的输出的快照:

【问题讨论】:

值 *ptr 和 ptr 不同,导致 printf 中使用了 "%d" 和 "%u" 请勿发布文字图片。 【参考方案1】:

将您的打印方式更改为:

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

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

可能的输出:

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

现在你看到它们是相同的。

【讨论】:

以上是关于关于指向数组的指针的问题? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

初始化指向多维数组的动态指针的正确方法? [复制]

为啥在 C 中为数组声明和指向数组声明的指针动态分配的内存不同? [复制]

关于keil编译器下指针指向数组警告的问题?

C语言中关于二维数据指针的问题?

如何获得指向成员函数的指针? [复制]

如何利用memcpy将二维指针复制给一维指针?