! 定义函数
function add_numbers(a, b) result(sum_result)
real :: a, b
real :: sum_result
sum_result = a + b
end function add_numbers
! 定义子程序
subroutine multiply_by_two(arr)
real, intent(inout) :: arr(:)
integer :: i
do i = 1, size(arr)
arr(i) = arr(i) * 2
end do
end subroutine multiply_by_two
program main
real :: num1, num2, sum_value
real, dimension(3) :: my_array
num1 = 3.0
num2 = 5.0
sum_value = add_numbers(num1, num2)
print *, '两数之和为:', sum_value
my_array = [1.0, 2.0, 3.0]
call multiply_by_two(my_array)
print *, '数组元素乘以2后:', my_array
end program main
函数和子程序调用方式的不同
- 函数调用:
- 函数调用时会返回一个值,通常作为表达式的一部分参与运算。例如在上述代码中
sum_value = add_numbers(num1, num2)
,函数 add_numbers
返回的和被赋值给 sum_value
变量。
- 子程序调用:
- 子程序主要用于执行一系列操作而不返回值(虽然可以通过
intent(inout)
参数来修改传入的数据)。调用子程序使用 call
语句,如 call multiply_by_two(my_array)
,它直接对传入的数组 my_array
进行操作,而不会返回一个用于赋值的结果。