Ronny Haryanto wrote:
>
> Halo,
>
> Saya lupa caranya di C untuk pass by reference sebuah array yg berisi
> pointers. Saya coba spt di bawah dapetnya segfault. (Ceritanya mau bikin
> adjacency list utk suatu graph).
>
> #include <stdio.h>
> #include <stdlib.h>
>
> struct _edge
> {
> int adj;
> int cap;
> int flow;
> struct _edge* next;
> };
> typedef struct _edge edge;
>
> void fungsi(edge** G[])
> {
> /* saya mau mengubah isi G ini tapi supaya tidak hilang
> setelah function ini return */
> edge* curr;
> curr = (edge*) malloc(sizeof(edge));
> curr->adj = 1;
> curr->cap = 2;
> curr->flow = 3;
> curr->next = NULL;
> (*G)[0] = curr;
> }
>
> int main()
> {
> edge* G[5];
> int i;
>
> for(i=0; i<5; i++)
> G[i] = NULL;
>
> fungsi(&G);
>
> for(i=0; i<5; i++)
> printf("%X\n", G[i]);
> }
>
> Mohon saya diingatkan kembali. Makasih.
>
Nggak usah pake reference, karena yg. diubah kan *isi* arraynya, bukan
variabel arraynya. Jadi si fungsi itu cukup begini:
void fungsi(edge* G[])
Yg. ini buat mengingatkan gimana mbaca deklarasi variabel:
- edge *G[5] artinya:
G is array [5] of pointer to edge. Kan dibacanya kurang lebih dari
kanan ke kiri, sbb:
- G[5] -> G is array [5]
- * -> of pointer
- edge -> to edge
- edge** G[] artinya:
G is array[] of pointer to pointer to edge (!!). Cara mbacanya sama
juga:
- G[] -> G is array []
- * -> of pointer
- * -> of pointer
- edge -> to edge
sdgkan kalo yg. dimaksudkan 'pointer to array[] of pointer to edge',
syntaxnya:
edge* (*G)[]
dibacanya:
- (*G) -> G is pointer (karena ada kurung, maka dia dibaca duluan)
- [] -> to array []
- * -> of pointer
- edge -> to edge
> PS. sekalian ada yg punya URL utk referensi C terutama yg berurusan dengan
> complex data structure seperti linked list dan arrays?
>
kalo yg. ini ndak tau, mungkin rekan2 yg. laen bisa mbantu. Ogut pake
C++ sih.. ;)
> --
> Ronny Haryanto
>
cheers,
Benny
--------------------------------------------------------------------------------
Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3
Pengelola dapat dihubungi lewat [EMAIL PROTECTED]