C中的两个函数有什么区别吗?
void f1(int arr[]) {
//some code...
}
void f2(int arr[10]) {
//some code
}
f1函数中第一个数组的大小是多少?
答案 0 :(得分:6)
c中的两个函数有什么区别吗?
这里没有区别。两者都将被编译器解释为//STATE HANDLER
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app.config([
'$stateProvider',
'$urlRouterProvider',
function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('newAlarm', {
url: '/newAlarm',
views: {
'': {templateUrl: '/templates/newAlarmPage.html'},
'header@newAlarm':{templateUrl: '/templates/header.html'},
'newAlarmForm@newAlarm':{templateUrl: '/templates/newAlarmForm.html'}
},
controller: 'NewScheduleCtrl'
})
//to be changed
.state('home', {
url: '/home',
views: {
'': {templateUrl: '/templates/homePage.html'},
'header@home':{templateUrl: '/templates/header.html'}
},
controller: ''
});
//end of to be changed
$urlRouterProvider.otherwise('home');
}]);
,因为当用作函数参数时,数组将转换为指向其第一个元素的指针。
f1函数中第一个数组的大小是多少?
严格来说,这里没有数组。它唯一指向int *arr
的指针。如果您使用int
,那么您将获得等于sizeof(arr)
的值。
当参数类型是指向数组的指针时,需要参数中的数组大小。在这种情况下,您需要指定数组的大小,因为每个大小使指针指向不同的类型。
sizeof(int *)
答案 1 :(得分:3)
当一个数组传递给一个函数时,它会衰减成一个指向数组第一个元素的指针。
所以这个:
void f1(int arr[])
而且:
void f1(int arr[10])
而且:
void f1(int *arr)
都是等同的。
事实上,如果您将int a[20]
传递给声明为int arr[10]
的函数,gcc就不会抱怨。