PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > comp.lang.c > Problem with pointers, require some
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
Problem with pointers, require some

Réponse
 
LinkBack Outils de la discussion
Vieux 05/02/2008, 17h22   #1
david
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Problem with pointers, require some

Hello, I am getting some problems with C and how it handles the
pointers. I will tell more about the situation: I have created my own
structure for making one way linked list. I have procedure int
createList(child *root) [child is that structure] and before that I
create pointer child *rootA, and then I invoke createList(rootA)
[*rootA holds the value, and rootA is the pointer, holds the address
as I remember]. And this function creates dynamic list, but the
problem is that rootA does not point to it. After creating list
function returns the length of it.

The question is, how should I send to function a pointer, create a
list in heap and then make that pointer to point to it?

It would be something like this:
int main {
int *item;
func(*item);
printf("%d", *item);
return 0;
}

func(int *num) {
num = malloc(sizeof(int));
*num = 8;
printf("%d", *num);


printf in func gives "8", but item still does not point to the same
memory where that number is located. But I want it to point. How?
}
  Réponse avec citation
Vieux 05/02/2008, 17h26   #2
david
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problem with pointers, require some

Small mistaking rewriting, should be "func(item);" in program. Any
ideas how to make it point to what I want?
  Réponse avec citation
Vieux 05/02/2008, 17h38   #3
fnegroni
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problem with pointers, require some

Use a pointer to pointer.

You can read about it in any C programming manual.
  Réponse avec citation
Vieux 05/02/2008, 17h51   #4
Malcolm McLean
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problem with pointers, require some


"david" <David.Abdurachmanov@gmail.com> wrote in message
> int main {
> int *item;
> func(*item);
> printf("%d", *item);
> return 0;
> }
>
> func(int *num) {
> num = malloc(sizeof(int));
> *num = 8;
> printf("%d", *num);
>
>
> printf in func gives "8", but item still does not point to the same
> memory where that number is located. But I want it to point. How?
> }
>

C always passes parameters by value. So when you set num to the return value
of malloc(), you are setting a temporary copy.

The way round this is to pass the address of a variable. This is one use of
pointers.
Let's give a slightly more realistic example. You want to clamp a pair of x,
y coordinates to the width and height of an image.

/*
clamp x, y coordiantes to edges of image
Params: width - image width
height - image height
x (in / out) x coordinate
y (in / out) y coordinate
Returns: 0 if point withing image, 1 if clamped
*/
int clamp(int width, int height, int *x, int *y)
{
/* check if we are within the image */
if(*x >= 0 && *x < width && *y >= 0 && *y < height)
return 0;
/* we're outside it, so adjust coordinates to nearest edge */
if(*x < 0)
*x = 0;
if(*x >= width)
*x = width-1;
if(*y < 0)
*y = 0;
if(*y >= height)
*y = height -1;
return 1;
}


--
Free games and programming goodies.
http://www.personal.leeds.ac.uk/~bgy1mm

  Réponse avec citation
Vieux 05/02/2008, 18h22   #5
david
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problem with pointers, require some

Thanks for the , I used pointer to pointer as a few people
suggested.

It is my first day with C programming language and I still collecting
books, websites and etc. with the most detailed explanation how
everything here works. Maybe you could recommend some good material?

And for ASM looks a lot easier comparing to C, but it looks that in a
week I will manage to write some good or at least better code than I
do now.

Thanks again.
  Réponse avec citation
Vieux 05/02/2008, 19h54   #6
santosh
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problem with pointers, require some

david wrote:

> Thanks for the , I used pointer to pointer as a few people
> suggested.
>
> It is my first day with C programming language and I still collecting
> books, websites and etc. with the most detailed explanation how
> everything here works. Maybe you could recommend some good material?


The C Programming Language (Second Edition) by Kernighan & Ritchie
C: A Reference Manual (Fifth Edition) by Harbison & Steele
C Programming: A Modern Approach by K.N. King

Steve Summit's "notes" on C
<http://www.eskimo.com/~scs/cclass/cclass.html>

C tutorial by Tom Torf
<http://cprog.tomsweb.net/>

Latest draft of the evolving C Standard:
<http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf>

> And for ASM looks a lot easier comparing to C, [ ... ]


The clinching advantage of C is that you needn't rewrite everything for
every platform and chip that you target.

  Réponse avec citation
Vieux 05/02/2008, 20h07   #7
Default User
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problem with pointers, require some

david wrote:

> Thanks for the , I used pointer to pointer as a few people
> suggested.
>
> It is my first day with C programming language and I still collecting
> books, websites and etc. with the most detailed explanation how
> everything here works. Maybe you could recommend some good material?


Then this is not how you should approach learning. Get a basic tutorial
book. Read through it, working the exercises in each chapter. Then
start creating simple programs.





Brian
  Réponse avec citation
Vieux 05/02/2008, 22h17   #8
CBFalconer
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problem with pointers, require some

david wrote:
>
> Small mistaking rewriting, should be "func(item);" in program. Any
> ideas how to make it point to what I want?


See sig below.

--
If you want to post a followup via groups.google.com, ensure
you quote enough for the article to make sense. Google is only
an interface to Usenet; it's not Usenet itself. Don't assume
your readers can, or ever will, see any previous articles.
More details at: <http://cfaj.freeshell.org/google/>



--
Posted via a free Usenet account from http://www.teranews.com

  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 19h09.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,17629 seconds with 16 queries