Difference between revisions of "C programming/Structures"

From Teknologisk videncenter
Jump to: navigation, search
m (New page: =Basic structrues= ==Example 1== Create and instantiate a structure <source lang=c> #include <stdio.h> #include <stdlib.h> struct coor { int x; int y; }; int main( void ) { struct ...)
 
m (Example 2)
Line 23: Line 23:
 
</source>
 
</source>
 
==Example 2==
 
==Example 2==
Same as example 1, but using as [C_programming/typedef|typedef]]
+
Same as example 1, but using as [[C_programming/typedef|typedef]]
 
<source lang=c>
 
<source lang=c>
 
#include <stdio.h>
 
#include <stdio.h>
Line 45: Line 45:
  
 
</source>
 
</source>
 +
 
==Example 3==
 
==Example 3==
 
In example 3 the memory is reserver with [[C_programming/malloc|malloc]] and [[C_programming/indirect addressing|indirect addressing]] is used to access the structure.
 
In example 3 the memory is reserver with [[C_programming/malloc|malloc]] and [[C_programming/indirect addressing|indirect addressing]] is used to access the structure.

Revision as of 14:10, 21 November 2010

Basic structrues

Example 1

Create and instantiate a structure

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

struct coor {
  int x;
  int y;
};

int main( void ) {
  struct coor place;
  
  place.x = 17;
  place.y = 19;
  
  printf("Tallet er %i\n",place.x+place.y);
  return(0);
}

Example 2

Same as example 1, but using as typedef

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

struct coor {
  int x;
  int y;
};

typedef struct coor coordinate;
int main( void ) {
  coordinate place;
  
  place.x = 17;
  place.y = 19;
  
  printf("Tallet er %i\n",place.x+place.y);
  return(0);
}

Example 3

In example 3 the memory is reserver with malloc and indirect addressing is used to access the structure.

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

struct coor {
  int x;
  int y;
};

typedef struct coor coordinate;
int main( void ) {
  coordinate *place = malloc(sizeof(coordinate));
  
  (*place).x = 17;  /* One form of indirect addressing shown */
  place->y = 19;     /* Another form of indirect addressing shown */
  
  printf("Tallet er %i\n",place->x+place->y);
  return(0);
}