2016-09-18 8 views
-3

配列内の各ポインタが配列を指すポインタの配列を指すポインタを作成することに問題があります。私はこれを設定し、各配列に値を格納するのに問題があります。目的は、配列の索引付けを避け、ポインタ算術のみを使用することです。このアイデアを正しく実装し、後でアクセスするための値を格納する方法の例は、関数へのポインタ、配列へのポインタ、およびポインタ算術を理解するのに役立ちます。私はmallocとcallocの使い方を知っています。私は基本的なポインタを知っているが、この問題はより高度なので、これがどのように実装されているかの例が大きく助けになるだろう!ありがとう! :)あなたの説明から、各ポインタが配列を指しているポインタの配列へのポインタ

+0

あなたがしようとしているかを示すために素晴らしいことです。さらに、不完全な型を指定しました。最も内側の配列がどのような型式を格納しているのかを知る必要があります。また、詳細が必要です - 配列は(各レベルで)固定サイズか可変サイズですか?等 – Purag

+0

あなたが「配列を指す」と言うとき、実際にそれを意味しますか? ( "配列の最初の要素を指す"とは対照的に) –

+0

'type * []'(型へのポインタの配列)と 'type(*)[]' 。 ダブル*ポイント; int型のサイズ; のprintf( "数値を入力します");配列は) –

答えて

0

あなたが何か必要があるかのように聞こえる:

一般に
#include <stdio.h> 

int main(void) { 
    // Make some arrays of ints 
    int a0[3] = {1, 2, 3}; 
    int a1[3] = {4, 5, 6}; 

    // To access element a1[2] do *(a1 + 2) 
    printf("%d\n", *(a1 + 2)); 

    // Make an array of int pointers 
    int* b[2] = {a0, a1};    // Or: int* b[2]; 
             //  *(b + 0) = a0; 
             //  *(b + 1) = a1; 

    // To access element a1 do *(b + 1) 
    // To access a1[1] through b just combine the two expressions 
    // so that you have *(*(b + 1) + 2) 
    printf("%d\n", *(*(b + 1) + 2)); 

    return 0; 
} 

を:アクセスb[i][j]するために行う*(*(b + i) + j)

+0

なので、 '[]'を使わずに配列に要素を追加することは*(b + i)だけでできますか? –

+0

@ MD_90 - はい。イニシャライザリストの代わりに、私はそれを次のようにすることができました: '(b + 0)= a0; *(b + 1)= a1; – 4386427

関連する問題