---
title: "C, array av pekare och gets(..)"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/151291-c-array-av-pekare-och-gets"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "jabbalizer"
published: "2006-09-14T08:03:49.000Z"
updated: "2006-09-15T05:13:16.000Z"
replies: 3
views: 542
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/151291-c-array-av-pekare-och-gets"
---

# C, array av pekare och gets(..)

## #1 — jabbalizer, 2006-09-14T08:03Z

Vad är skillnaden?

```
char * args[10];
char test[20];

****** VARFÖR FUNKAR DETTA  *****
gets(test);
args[0] = test;
******************************
execvp(args[0], args);
```

```
***MEN INTE OM MAN BYTER TILL DETTA ***
gets(args[0]);
***********************************
```

Och det viktigaste =) Vad ska man skriva för att kunna använda args\[0\] direkt? Och är det samma sak i scanf(...)?

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

## #2 — msossna, 2006-09-14T09:24Z

Inte helt säker men tror problemet ligger i att args\[0\] är en char\*, medans test är en array av char.

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

## #3 — GunnarD, 2006-09-14T09:37Z

\*args\[10\] innebär att du skapar en array med char **pekar**, medans char test\[20\] skapar en sträng av char (20 teckenlång) och reserverar minne för det.

I fallet test\[20\], om man bara skriver test (ex. gets(test)) så använder man pekaren (test) som pekar mot det utrymmet som är reserverat för strängen.

När du sedan gör:

gets(test);
args\[0\] = test;

Så läser du först in en sträng till variabeln test och sedan sätter du att pekaren args\[0\] pekar är samma som pekaren test.

I fallet "gets(args\[0\]);" så har pekar inte args\[0\] någonstanns och det blir fel, det du får göra är att allocker minne som args\[0\] pekar på.

Du skulle kunna göra så här:

```
char * args[10];
char test[20];

****** VARFÖR FUNKAR DETTA  *****
args[0] = test;
gets(test);
******************************
execvp(args[0], args);
```

Läs på lite hur pekare fungerar i C, kan vara rätt komplext!

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

## #4 — jabbalizer, 2006-09-15T05:13Z

tackar =)

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

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/151291-c-array-av-pekare-och-gets
