---
title: "Test med pekare"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/107234-test-med-pekare"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "taper lawyer"
published: "2004-07-13T10:26:07.000Z"
updated: "2004-08-14T10:25:50.000Z"
replies: 13
views: 493
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/107234-test-med-pekare"
---

# Test med pekare

## #1 — taper lawyer, 2004-07-13T10:26Z

Jag försöker nu lära mig hur man använder pekare, men givetvis fungerar inte programmet jag skapar...
[Länk](http://paprika.floppweb.net/C++/test_pekare.cpp)

Edit: Jag kanske skall berätta vad programmet skall göra; jag skall med hjälp av pekaren få ut värdet i variabeln var.

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

## #2 — Phorpher, 2004-07-13T10:33Z

Variabeln "var" ligger i funktionen test(). Du kan inte komma åt den variabeln från main().

```
#include <iostream>

using namespace std;

int main()
{
	char var = 'a';
	char *pek = &var;
	
	cout << *pek << endl;
	cout << var << endl;
	
	return 0;
}
```

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

## #3 — taper lawyer, 2004-07-13T13:06Z

Nu ser koden ut så här:

```
#include <iostream>

using namespace std;

int main()
{
	char var = 'a';
	char *pek = &var;
	
	cout << pek << endl;
	cout << var << endl;
	
	cin >> var;
	
	return 0;
}
```

Men varför skriver den ut denna text?

> aá "
> a

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

## #4 — Viktor, 2004-07-13T13:16Z

När du skriver ut din pekare så vet programmet inte hur stort utrymme som den pekar på, 1 eller 2 eller ännu fler tecken, då skriver programmet ut alla tecken tills den hittar ett null tecken ('\\0'), när du däremot skriver ut en char så vet datorn att det bara är ett tecken och skriver därför bara ut ett tecken.

/Viktor

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

## #5 — taper lawyer, 2004-07-13T13:21Z

Hm, men hur skall jag göra då?

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

## #6 — spango, 2004-07-13T13:43Z

Det är en annan sak att skriva *cout \<\< \*var* och att skriva *cout \<\< var* \- i den första varianten avrefererar du pekaren, vilket innebär att du säger att du vill skriva ut en char, så då skulle det bara skrivas ut ett "a". I den andra varianten, dock, skickar du pekaren till utskrift, och det råkar ju falla sig som så att i C, och delvis i C++, används charpekare som strängar, och de antas som Viktor påpekade fortsätta till första bästa nulltecken.

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

## #7 — taper lawyer, 2004-07-13T14:07Z

Jag kom fram till detta:

```
#include <iostream>

using namespace std;

int main()
{
	char var = 'a';
	char *pek = &var;
	
	cout << *pek << endl;
	cout << var << endl;
	
	cin >> var;
	
	return 0;
}
```

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

## #8 — Alpha III, 2004-08-12T11:00Z

```
#include <iostream>
#include <stdlib.h>

using namespace std;

	char var = 'a';
	char *pek = &var;

int main()
{

cout<<var<<endl;
cout<<*pek<<endl;
	
	system("PAUSE");
	return 0;
}
```

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

## #9 — PeW, 2004-08-12T11:52Z

Pekare är kanske inte så givet. Men om man betraktar programmet man skriver som en samling adresser och inte endast som att man ska utföra operationer så blir det lite enklare. Genom pekaren får man tillgång till adresserna och dess innehåll. 

Pekare används med fördel till listor, arrayer och funktioner som voidpekare (generella pekare). Det i tråden givna exemplena säger inte så mycket då det först med en reell användbarhet som kronan brukar trilla ned  :)

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

## #10 — taper lawyer, 2004-08-12T20:17Z

Ni har inte lust att skriva ett litet exempel på hur man med fördel använder pekare, så kanske poletten (kronan) trillar ner för mig också? :)

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

## #11 — PeW, 2004-08-12T22:37Z

Hmm... för en tid sedan kastade jag ihop en räknare som exempel på hur man kan traversera expressions (fråga här i forumet). Där finns en liten variant av hur man kan använda pekare för att plocka bit för bit av en sträng (input till räknaren): <http://www.webforum.nu/showthread.php?s=&postid=773864#post773864>

Annars kan du ju beakta följande:

```
void func1(char *pek)
{
    *pek='a';
}

void func2(char var)
{
    var='a';
}
```

Vilken av funktionerna har förändrat sin parameters värde när funktionen terminerat? 

Vad det gäller funktionsparametrar så kastas normalt parametervärden (eller kopior av värden/a) bara upp på stacken för att sen användas i funktionen. När funktionen terminerar försvinner stacken och då även värdena (parametrarna). Men om man skickar en pekare så skickar man inga värden, utan kopia på adressen till värdet varpå det är skitsamma om stacken försvinner då funktionen ju fått access direkt och inga kopior.

En lista:

```
typedef struct alist{
   void *data;
    alist *next;
};
```

I detta onyanserade C - kodexempel är varje segment (ovan kod) ett element i listan och 'void \*data' en pekare till vilken datatyp som helst (mao en generell pekare) och 'alist \*next' en väg till nästa element i listan. Det hade blivit otympligt för att inte säga omöjligt att försöka få till (kod ovan) listan utan pekare... krävs ju dock att man skapat (allokerat) minne som pekarna kan peka på.

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

## #12 — Alpha III, 2004-08-14T00:11Z

> **taper lawyer skrev:**
>
> Ni har inte lust att skriva ett litet exempel på hur man med fördel använder pekare, så kanske poletten (kronan) trillar ner för mig också? :)

Det finns ju massor av tutorials.

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

## #13 — Engine^, 2004-08-14T10:19Z

Det bästa exemplet, anser jag, är att själv sätta sig ner och pilla ihop en länkad lista, så kommer man på massa bra saker pekare kan användas till.

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

## #14 — Engine^, 2004-08-14T10:25Z

Jag hittade en rätt välskriven artikel om pekare för den som inte vet vad det är eller hur dom fungerar.

[A Beginner's Guide to Pointers](http://www.codeproject.com/cpp/pointers.asp)

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

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/107234-test-med-pekare
