---
title: "Låta pekare peka till funktion?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/68721-låta-pekare-peka-till-funktion"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "Mattias"
published: "2003-02-19T10:11:54.000Z"
updated: "2003-02-19T15:53:39.000Z"
replies: 6
views: 361
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/c-cpp/68721-låta-pekare-peka-till-funktion"
---

# Låta pekare peka till funktion?

## #1 — Mattias, 2003-02-19T10:11Z

Jag har problem med att låta en pekare peka på en funktion i C. Har skrivit nedanstående kod som känns rätt, men uppenbarligen är den inte det eftersom jag (vid kompilering) får felmeddelandet: "warning: assignment from incompatible pointer type" på raden där pekaren tilldelas funktionen (se nedan).

```
// relevanta delar av funktionen
char *skapa_nyckel_alt1(int index, struct film arr[]){
  char *nyckel_pek;
...
  return nyckel_pek;
...
}
 // pekardeklartion
char (*fpek)(int, struct film);
// pekaren tilldelas funktionen (raden med felmeddelandet)
fpek = (char*) skapa_nyckel_alt1;
```

Någon som kan vägleda mig hur man går tillväga för att låta pekaren peka till funktionen?

Permalänk: https://www.webforum.nu/p/68721

## #2 — Phorpher, 2003-02-19T10:31Z

```
fpek = (char*) skapa_nyckel_alt1;
```

 

Här ovanför försöker du casta funktionen till en char-pekare och sen tilldela fpek det värdet.

```
fpek = skapa_nyckel_alt1;
```

 

Borde fungera utmärkt. :)

Ett litet tips: <http://www.function-pointer.org/>   ;)  :bire

Permalänk: https://www.webforum.nu/p/956996

## #3 — Mattias, 2003-02-19T10:42Z

Nej, det fungerar inte. Känns som jag testat alla kombinationer av stjärnor här och där på den raden. ;) Misstänker att det är nåt fel i själva deklarationen av fpek-pekaren. Funktionen returnerar ju ingen char, utan en \_pekare\_ till en char. Men mitt chansningsrace har inte heller gett nån utdelning på deklartionsraden. ;)

Permalänk: https://www.webforum.nu/p/957006

## #4 — Phorpher, 2003-02-19T13:20Z

Ahh.. Sorry.

Det här borde fungera:

```
// pekardeklaration
char* (*fpek)(int, struct film);

fpek = skapa_nyckel_alt1;
```

 

 :)

Permalänk: https://www.webforum.nu/p/957111

## #5 — Mattias, 2003-02-19T14:01Z

Nej, tyvärr fick jag återigen "warning: assignment from incompatible pointer type" på raden:

```
fpek = skapa_nyckel_alt1;
```

Permalänk: https://www.webforum.nu/p/957147

## #6 — Phorpher, 2003-02-19T15:41Z

Hmm... Konstigt. Det fungerar utmärkt för mig. Visual Studio 6.0 SP3

```

#include <stdio.h>
#include <stdlib.h>

// relevanta delar av funktionen
char *skapa_nyckel_alt1(char character)
{
	char *nyckel_pek = (char *)malloc(sizeof(char));
	*nyckel_pek = character;
	
	return nyckel_pek;
}

int main(void)
{

	char *foo;
	char* (*fpek)(char);

	fpek = skapa_nyckel_alt1;

	foo = fpek('A');

	printf("\n%c\n", *foo);

	free(foo);

	return 0;
}
```

Permalänk: https://www.webforum.nu/p/957226

## #7 — Mattias, 2003-02-19T15:53Z

Problemet är löst! Felet låg i pekardeklarationen. Istället för:

```
char* (*fpek)(int, struct film);
```

...skrev jag:

```
char* (*fpek)(int, struct film[]);
```

Det var alltså hakparentesen efter film som jag missat Slarvigt. Tack för vägledningen, Phorpher!

Permalänk: https://www.webforum.nu/p/957233

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/68721-låta-pekare-peka-till-funktion
