SóProvas


ID
2519389
Banca
FCC
Órgão
TRE-PR
Ano
2017
Provas
Disciplina
Programação
Assuntos

Considere o seguinte código PHP:

<?php
function calc(&$var)
{
$var++;
}
$a=5;
calc($a);
$a+=5;
echo $a;
?>

Ao executar o código, o valor exibido será

Alternativas
Comentários
  • Por padrão, argumentos de função são passados por valor (de forma que se você mudar o valor do parâmetro dentro da função, ele não é alterado fora da função). Para permitir que uma função modifique os seus argumentos, eles devem ser passados por referência.

    Para ter um argumento para uma função sempre passado por referência, adicione antes dele um "e comercial" (&) ao nome do argumento na definição da função.

    http://php.net/manual/pt_BR/functions.arguments.php

  • O &  antes do parâmetro da função calc faz com que o valor da variável passada como argumento para esta função possa ser alterado. Isso é chamado Passagem por Referência, e não deve ser confundido com Passagem por Valor, onde apenas o valor do argumento é passado. A Passagem por Referẽncia pode causar efeitos colaterais (side effects) se mal utilizada.

    Caso haja mais dúvidas:

    http://php.net/manual/pt_BR/language.references.return.php

    http://www.criarweb.com/artigos/86.php

     

    Mais sobre parâmetros e argumentos:

    https://pt.stackoverflow.com/questions/32448/qual-a-diferen%C3%A7a-entre-par%C3%A2metro-e-argumento

  • &=1 ai fazendo o total 10+1=11

  • O valor passado a função calc foi por referência conforme o & na frente do parametro. Sendo assim, foi passado o valor 5 e a função calc incrementou um, ficando 6. o $a+=5 é equivalente $a=$a + 5, como o $a no momento é 6, assim somando a 5 fica 11.
     

  • LETRA C

    para quem queira ver o código:

    <?php 

    function calc(&$var) { 

    $var++; 

    $a=5; 

    calc($a); 

    $a+=5; 

    echo $a; 

    ?>