c - 为什么数组有时打印值有时打印地址?

标签 c arrays

您能解释一下为什么在第一个程序中“array[ counter ]”打印值而在第二个程序中“array[ counter ]”打印地址吗?

第一个程序

main()
{
    int array[ 4 ] = { 1, 2, 3, 4 };
    int counter;
    for( counter = 0 ; counter <= 3; counter++ )
        printf( "%u\n", array[ counter ]);
}

第二个程序

main()
{
    int array[ 4 ] [ 1 ]= { 1, 2, 3, 4 };
    int counter;
    for( counter = 0 ; counter <= 3; counter++ )
        printf( "%u\n", array[ counter ]);
}

最佳答案

在第二个示例中,array[counter] 不是一个值,而是一个数组。

当您将数组作为参数传递给函数时,它会经历 array to pointer decay ,因此你得到一个指向数组开头的指针,而不是数组本身。

关于c - 为什么数组有时打印值有时打印地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25319691/

相关文章:

sql - 检查 Postgres jsonb 是否包含以下值之一

c - 从指针中减去得到长度

c - 如何在 C 函数中传递二维数组(矩阵)?

c - 在 FreeBSD 上使用 -std=c99 获取 "_Static_assert is a C11-specific feature"

arrays - Mongodb:如何自动增加子文档字段?

php - 如何比较两个二维数组中的行?

c - c中的二叉树 'smart'搜索函数

c - 如何在 C 语言中将函数的返回值存储在变量中

php - 将 MySQL INNER JOIN 的结果合并到一个 PHP 数组中

javascript - 文档数据库 : How to filter document on array within array?