C语言打印相关地址问题

img


这个代码为什么没有依次打印各个地址,却打印了&arr[10]的代码。


#include<stdio.h>

int main()
{
    int arr[]={1,2,3,4,5,6,7,8,9,10};
    int sz=sizeof(arr)/sizeof(arr[0]);
    int i=0;
    for(i=0;i<sz;i++)
    {
        printf("&arr[%d]=%p\n",i,&arr[i]);
    }
    return 0;
}

帮你改了

修改后的代码如下:

#include<stdio.h>

int main()
{
    int arr[]={1,2,3,4,5,6,7,8,9,10}; // 定义数组
    int sz=sizeof(arr)/sizeof(arr[0]); // 计算数组大小
    int i=0;
    for(i=0;i<sz;i++) // 循环遍历数组
    {
        printf("&arr[%d]=%p\n",i,&arr[i]); // 输出数组元素的地址
    }
    return 0; // 程序结束
}

因为你的for循环后面多了个分号,你的循环语句就成了空语句,所以下面括号里的语句并不在循环体内,括号里的语句其实只执行了一次。