
C言語で、下のようなコードがあるとします。
uint32_tの3次元行列の各要素を、uint8_tの要素の引数を持つ関数にポインタを渡し、uint8_tの連続する配列として処理させるようにしたいと思っています。配列var[2][3][4]のメモリ空間での配置イメージは、下に付記した図のようになると思います。
このとき、関数funcを呼び出すときには、どのように記述すればよいでしょうか。
よろしくお願いします。
-------------------------------------------------------------------------------------
#include <stdint.h>
...
void func(uint8_t in[][16]){
...
}
void main(){
uint32_t var[2][3][4];
//
// varの宣言後、各要素に何かしらの値を入れる。
//
//ここで、var[0][0]とvar[0][1]をそれぞれ関数funcに渡し、連続する16個のuint8_tの配列として処理したい。
func(round_key[0]); //このような感じで書きたい。
func(round_key[1]); //このような感じで書きたい。
}
※ 配列var[2][3][4]のメモリ空間での配置イメージ
|----------------------------------------------------------------------------------------
| var[0] ...
|----------------------------------------------------------------------------------------
| var[0][0] | var[0][1] ...
|----------------------------------------------------------------------------------------
| var[0][0][0] | var[0][0][1] | var[0][0][2] | var[0][0][3] | var[0][1][0] | var[0][1][1] ...
|----------------------------------------------------------------------------------------
<------------------------- 16 Byte ------------------------>
No.1ベストアンサー
- 回答日時:
func の引数 uint8_t in[][16] は uint8_t (*in)[16] と等価だから, しかるべきなにかを uint8_t (*)[16] にキャストすればいいだけ.
あとその「配置イメージ」がなにをいっているのかよくわからんのだけど, 例えば var[0] やら var[0][1] やらがメモリ上に存在*しない*ことは理解できているんだね?
>var[0] やら var[0][1] やらがメモリ上に存在*しない*ことは理解できているんだね?
はい。大丈夫です。分かりにくい図ですみませんでした。
頂いた回答で解決できました。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
人気Q&Aランキング
-
4
このパズドラの服はどこに売っ...
-
5
「ずっと負けなし」を表す四字...
-
6
みかんの花咲く丘 の 手遊び...
-
7
二宮和也さんのパズドラIDを教...
-
8
複数の戻り値 (複数の配列) - A...
-
9
19節補助金と20節扶助費の違い...
-
10
底上げの反対語
-
11
なぞかけのアイデアをください...
-
12
Windows10のノートパソコンにエ...
-
13
就活の自己PRって面倒ですよね ...
-
14
三ツ矢サイダーの手遊び歌
-
15
凄いダジャレを教えて下さい。
-
16
iPad第六世代を買うかiPad Pro...
-
17
conception=妊娠?
-
18
ツムツムで鍵マークを出すには...
-
19
暇つぶしのゲーム
-
20
デッドバイデライトで、オファ...
おすすめ情報
公式facebook
公式twitter