Поведение Sizeof в C

Я узнал, что когда мы передаем имя массива в sizeof, имя массива не преобразуется в указатель на базовый адрес.Приведенный ниже код подтверждает этот факт, давая ответ 10.

#include <stdio.h> 

int main(){  
    int arr[10];  
    printf("Size of array is %d" , sizeof(arr)/sizeof(int));  
    return 0;  
}

Однако, когда я запускаю приведенный ниже код, я получаю 1. Независимо от того, написано ли измерение в прототипе или нет, ответ будет 1. Почему?

#include <stdio.h>

void dimension(int arr[]){  
    printf("Sizof array is %d" , sizeof(arr)/sizeof(int));  
}


int main(){  
    int arr[10];  
    dimension(arr);  
    return 0;  
}  
6
задан Pritpal 25 July 2011 в 08:34
поделиться