Zamiana adresów struktur

0

Witam.
Mam problem z przekazaniem adresów struktur do funkcji tak aby zamieniała ona oryginalne adresy a nie kopie.

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

typedef struct  
	{
	int **board;
	int n;
	int m;
	} *mat_t;

mat_t mat_alloc( int a , int b)
	{
	
	mat_t mat=malloc(sizeof *mat);
	int i;
	mat->n=a;
	mat->m=b;
	mat->board=(int**)malloc( mat->n * sizeof(int*));
	for(i=0;i<mat->n;i++)
		mat->board[i]=(int*)calloc(mat->m , sizeof(int));
	return mat;
	}
	
void mat_swap( mat_t mat1 , mat_t mat2)	
	{
	mat_t tmp=mat1;
	mat1=mat2;
	mat2=tmp;
	}
	
int main()
{
mat_t x=mat_alloc(5,5);
mat_t y=mat_alloc(6,6);
mat_swap(x,y);

printf("%d %d\n" , x->n , x->m);
printf("%d %d\n" , y->n , y->m);

return 0;

}

Pozdrawiam

0

Przekazuj wskaźnik przez wskaźnik, czyli mat_t*

0

Probowalem przekazywac w nastepujacy sposob ale to tez nie dziala.
void mat_swap( mat_t *mat1 , mat_t *mat2)

0
matexo napisał(a):

Probowalem przekazywac w nastepujacy sposob ale to tez nie dziala.

Bo swap'ować masz zawartość a nie adresy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1