Pode-se passar um array como parâmetro para um comando 4D ou para rotina de um plug-in 4D. Por outro lado, não se pode passar um array como parâmetro para um método de usuário. A alternativa é passar um apontador para um array como parâmetro para o método.
 Nota: pode-se passar arrays de processo e de interprocesso como parâmetros, mas não arrays locais.
 Seguem alguns exemplos.
  If((0<atNomes)&(atNomes<Size of array(atNomes))
  
    atNomes:=atNomes+1
 End if
Se precisar fazer o mesmo para 50 arrays diferentes, pode-se evitar escrever a mesma coisa 50 vezes, usando o seguinte método de projeto:
   
  
  
 
 C_POINTER($1)
 
 If((0<$1->)&($1-><Size of array($1->))
    $1->:=$1->+1 
 End if
Então, pode-se escrever:
  SELECIONAR SEGUINTE ELEMENTO(->atNomes)
  
 SELECIONAR SEGUINTE ELEMENTO(->asCodigosPostais)
  
 SELECIONAR SEGUINTE ELEMENTO(->aiIDRegistros)
  
- O seguinte método de projeto tem como resultado a soma de todos os elementos de um array numérico (Inteiro, Inteiro longo ou real):
  
  
  
 
 C_REAL($0)
 
 $0:=0
 For($vlElem;1;Size of array($1->))
    $0:=$0+$1->{$vlElem}
 End for
Nota: desde 4D v13, pode utilizar a função Sum para realizar a soma dos elementos de um array numérico. 
Assim, pode-se escrever:
  $vlSum:=Soma Array(->arSalarios)
  
 $vlSum:=Soma Array(->aiDefectCounts)
  
 $vlSum:=Soma Array(->alPopulacao)
- O seguinte método de projeto coloca em caixa alta todos os elementos de um array de texto ou alfanumérico:
  
  
  
 
 For($vlElem;1;Size of array($1->))
    If($1->{$vlElem}#"")
       $1->{$vlElem}:=Uppercase($1->{$vlElem}[[1]])+Lowercase(Substring($1->{$vlElem};2))
    End if
 End for
Assim, pode-se escrever:
  MAIUSCULAS ARRAY(->atTemas)
  
 MAIUSCULAS ARRAY(->asSobrenomes)
A combinação de arrays, apontadores e estruturas de looping, como For...End for, permite escrever muitos métodos de projeto úteis para manusear arrays.