void f(a[1000])编译器中其实就是调用voidf(int *a)

    xiaoxiao2021-12-14  21

    #include <stdio.h> void f(int a[1000000]) { printf("f_sizeof(a)= %d\n",sizeof(a)); } int main() {     int a[5] = {0,1,2,3,4}; int*p=a;     int* p1 = (int*)(&a + 1);      int* p2 = (int*)((int)a + 1);     int* p3 = (int*)(a + 1);          printf("p1[-1]=%d,p2[0]=%d,p3[1]=%d\n", p1[-1], p2[0], p3[1]);     printf("sizeof(&a[0])=%d\n\r",sizeof(&a[0])); printf("sizeof(&a)=%d\n",sizeof(&a)); printf("sieof(*a)=%d\n",sizeof(*a)); printf("sizeof(a)=%d\n",sizeof(a)); f(a);    return 0; } p1[-1]=4,p2[0]=16777216,p3[1]=2 sizeof(&a[0])=4 sizeof(&a)=20 sieof(*a)=4 sizeof(a)=20 f_sizeof(a)= 4  等于4  是因为void f(int a[1000])编译器中其实就是调用 void f(int *a)
    转载请注明原文地址: https://ju.6miu.com/read-972142.html

    最新回复(0)