Difference between revisions of "C programming/Structures"

From Teknologisk videncenter
Jump to: navigation, search
m (Example 2)
m (Example 2)
Line 24: Line 24:
 
==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 enclose=pre lang=c>
 
#include <stdio.h>
 
#include <stdio.h>
 
#include <stdlib.h>
 
#include <stdlib.h>
Line 45: Line 45:
  
 
</source>
 
</source>
 +
{{Source prog}}
  
 
==Example 3==
 
==Example 3==

Revision as of 14:20, 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);
}