Tutoriel C++

Tutoriel Pointeur sur fonction C++

Poster par mbougrin Le 13 juin 2022

Définition d'un pointeur

Un pointeur est une variable contenant l'adresse d'une autre variable d'un type donné. La notion de pointeur fait souvent peur car il s'agit d'une technique de programmation très puissante, permettant de définir des structures dynamiques, c'est-à-dire qui évolue au cours du temps (par opposition aux tableaux par exemple qui sont des structures de données statiques, dont la taille est figée à la définition).

Example pointeur fonction C++

Example de pointeur sur fonction en C++


void printNb(int nb)
{
  printf("%d\n", nb);
}

int main(int ac, char **av)
{
  void  (*ptr)(int);

  (*ptr) = &printNb;
  (*ptr)(42);
  return 0;  
}
          

Example de tableau pointeur sur fonction en C++


void printHello(void)
{
  printf("hello");
}

void printWord(void)
{
  printf("word");
}

int main(int ac, char **av)
{
  void  (*ptr[2])(int);

  ptr[0] = &printHello;
  ptr[1] = &printWord;
  (*ptr[0])();
  (*ptr[1])();
  return 0;  
}
          

Example de pointeur sur object en C++ avec le framework Qt


#include <QList>

int main(int argc, char *argv[])
{
    Q_UNUSED(argc)
    Q_UNUSED(argv)
    QList<int>    (*ptrFunc);
    QList<int>    lst;

    ptrFunc = &lst;
    (*ptrFunc).append(42);
    return 0;
}
          

Example de tableau pointeur sur object en C++ avec le framework Qt


void TestWidget::initPtr(void)
{
  QCheckBox   (*m_arrayPtr[10]);

  for (int i = 0 ; i < 10 ; ++i) {
    m_arrayPtr[i] = nullptr;
  }
  m_arrayPtr[0] = ui->checkBox0;
  m_arrayPtr[1] = ui->checkBox1;
  for (int i = 0 ; i < 10 ; ++i) {
    if (m_arrayPtr[i])
      m_arrayPtr[i]->setVisible(true);
  }
}