C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[15]: C言語のポインタ、配列について


(過去ログ 77 を表示中)

[トピック内 22 記事 (1 - 20 表示)]  << 0 | 1 >>

■45326 / inTopicNo.1)  C言語のポインタ、配列について
  
□投稿者/ YOU (4回)-(2010/01/10(Sun) 11:33:01)

分類:[.NET 全般] 

error: request for member ‘seq’ in something not a structure or union
というエラーが出てしまいます。

typedef struct _sequence_set {
int num;
sequence *seq;
} sequence_set;

ここでseqに文字列を入力しています。
void load_sequence_set( char *file, sequence_set *set )
{
set_seq_array( temp_array, len, &(set->seq[id]) );
}


float calc_integral(query_set)
{
  for (i = 0; i < 5; i++) {
integral_params[i].query = query_set.seq[i];
}

int main( int argc, char **argv )
{
  load_sequence_set( file_query, &query_set );
  calc(&query_set);
}

だいぶ簡略化させていただきましたが、mainで配列を送ることがやっぱできないのでしょうか?
お願いします。
引用返信 編集キー/
■45329 / inTopicNo.2)  Re[1]: C言語のポインタ、配列について
□投稿者/ .SHO (1100回)-(2010/01/10(Sun) 13:07:32)
No45326 (YOU さん) に返信

> typedef struct _sequence_set {
>     int        num;
>     sequence  *seq;
         ↑
このsequenceはどこで、どのように宣言されてるのですか?

> } sequence_set;


引用返信 編集キー/
■45330 / inTopicNo.3)  Re[1]: C言語のポインタ、配列について
□投稿者/ Azulean (499回)-(2010/01/10(Sun) 13:35:19)
No45326 (YOU さん) に返信
> float calc_integral(query_set)
こう書いたときって、query_set は int 扱いになるんでしたっけ。
(引数の型がないことを問題視)
引用返信 編集キー/
■45332 / inTopicNo.4)  Re[2]: C言語のポインタ、配列について
□投稿者/ YOU (5回)-(2010/01/10(Sun) 13:50:20)
No45329 (.SHO さん) に返信
> 早速返信ありがとうございます

typedef struct _sequence {
int len;
char *name;
char *array;
int score;
} sequence;

となっています。
引用返信 編集キー/
■45336 / inTopicNo.5)  Re[2]: C言語のポインタ、配列について
□投稿者/ YOU (7回)-(2010/01/10(Sun) 15:25:45)
calc(&query_set);

で配列を送ることができないのでしょうか?
引用返信 編集キー/
■45337 / inTopicNo.6)  Re[3]: C言語のポインタ、配列について
□投稿者/ Azulean (500回)-(2010/01/10(Sun) 15:49:16)
No45336 (YOU さん) に返信
> calc(&query_set);
> で配列を送ることができないのでしょうか?

できますけど、そのように関数の引数のところを書く必要がありますよ。
ご提示いただいたコードでは、何も型を書いていませんが、どうしてですか?
(「書く必要がある」ということを知らない?型の書き方が分からない?)
引用返信 編集キー/
■45340 / inTopicNo.7)  Re[3]: C言語のポインタ、配列について
□投稿者/ .SHO (1101回)-(2010/01/10(Sun) 16:03:51)
No45336 (YOU さん) に返信

> calc(&query_set);
> で配列を送ることができないのでしょうか?

っていうか、calc も query_set も宣言されてないし
エラーが出てるのは seq だし、いらんコードばかり書かれてて
肝心な部分が書かれてないので、答えようがないです。

引用返信 編集キー/
■45341 / inTopicNo.8)  Re[4]: C言語のポインタ、配列について
□投稿者/ .SHO (1102回)-(2010/01/10(Sun) 16:08:46)
そっか、

> float calc_integral(query_set)
> {
>   for (i = 0; i < 5; i++) {
> integral_params[i].query = query_set.seq[i];
      ↑
 ここでエラーが出てるんですね。
 エラーメッセージに行番号出ないのですか?

> }

引用返信 編集キー/
■45344 / inTopicNo.9)  Re[5]: C言語のポインタ、配列について
□投稿者/ YOU (8回)-(2010/01/10(Sun) 19:18:12)
No45341 (.SHO さん) に返信
はい、
>>integral_params[i].query = query_set.seq[i];
の部分でエラーが出ています。

Azuleanさん>すいません、型の書き方がいまいちよくつかめていません。calc_integral(sequence_set *query_set)
でいいのでしょうか?

calcはcalc_integralの間違いでした。色々と申し訳ありません。
引用返信 編集キー/
■45346 / inTopicNo.10)  Re[6]: C言語のポインタ、配列について
□投稿者/ YOU (10回)-(2010/01/10(Sun) 19:52:56)
改めて書き直します。

typedef struct _sequence {
int len;
char *name;
char *array;
int score;
} sequence;

typedef struct _sequence_set {
int num;
sequence *seq;
} sequence_set;

void set_seq_array( char *array, int len, sequence *seq )
{
size_t size;

seq->len = len;
size = sizeof(char) * (len+1);
seq->array = (char*) malloc_e( size, "seq->array" );
memcpy( seq->array, array, len );
seq->array[len] = 0;
}

void load_sequence_set( char *file, sequence_set *set )
{
set_seq_array( temp_array, len, &(set->seq[id]) );
}

float calc(seqence_set *query_set)
{
for (i = 0; i < 5; i++) {
integral_params[i].query = query_set.seq[i]; /*エラーはここだと表示されます。*/
}

int main( int argc, char **argv )
{
char *file_query;
sequence_set query_set;
file_query = argv[2];

load_sequence_set( file_query, &query_set );
calc(&query_set);
}

引用返信 編集キー/
■45347 / inTopicNo.11)  Re[7]: C言語のポインタ、配列について
□投稿者/ .SHO (1103回)-(2010/01/10(Sun) 20:01:00)
No45346 (YOU さん) に返信

> float calc(seqence_set *query_set) 

書き方は、これでOKです。

> { 
>   for (i = 0; i < 5; i++) { 
>     integral_params[i].query = query_set.seq[i]; /*エラーはここだと表示されます。*/
                                          ↑
      query_set はポインタなので query_set->seq[i]; です。

> } 

引用返信 編集キー/
■45353 / inTopicNo.12)  Re[8]: C言語のポインタ、配列について
□投稿者/ YOU (12回)-(2010/01/11(Mon) 01:28:04)
No45347 (.SHO さん) に返信
> ありがとうございます。
ですが、同じ行でincompatible types in assignment
というエラーが出てしまいました。。
引用返信 編集キー/
■45355 / inTopicNo.13)  Re[9]: C言語のポインタ、配列について
□投稿者/ επιστημη (2372回)-(2010/01/11(Mon) 01:38:48)
επιστημη さんの Web サイト
> integral_params[i].query = query_set->seq[i];
> ですが、同じ行でincompatible types in assignment
> というエラーが出てしまいました。。

integral_params[i].query の型が sequence じゃないんでしょうね。

引用返信 編集キー/
■45356 / inTopicNo.14)  Re[9]: C言語のポインタ、配列について
□投稿者/ Azulean (501回)-(2010/01/11(Mon) 01:50:41)
No45353 (YOU さん) に返信
> ですが、同じ行でincompatible types in assignment
> というエラーが出てしまいました。。
そのエラーの意味は何かご存知でしょうか。
ご存知であった場合、考えた結果としてどのように捉えて、何が分からないのでしょうか。

事実を述べるだけでなく、自身の考えた結果も添えてください。
引用返信 編集キー/
■45364 / inTopicNo.15)  Re[10]: C言語のポインタ、配列について
□投稿者/ .SHO (1104回)-(2010/01/11(Mon) 10:12:00)
>> integral_params[i].query = query_set->seq[i];
>>ですが、同じ行でincompatible types in assignment
>>というエラーが出てしまいました。。

「incompatible types in ちょめちょめ」は、型が矛盾してるんです。
ちょめちょめが「assignment」なら代入、「return」なら関数の戻り値とか
そんな感じです。

引用返信 編集キー/
■45370 / inTopicNo.16)  Re[11]: C言語のポインタ、配列について
□投稿者/ YOU (14回)-(2010/01/11(Mon) 16:17:41)
typedef struct {
sequence *query;
float sum;
} integral_params_t;

typedef struct {
integral_params_t *integral_params;
} thread_arg_t;

という型でやっているのですが何が違うのでしょうか?
これでintegral_params.queryの形はseqenceだと思うのですが違うのでしょうか??
引用返信 編集キー/
■45374 / inTopicNo.17)  Re[12]: C言語のポインタ、配列について
□投稿者/ Blue (24回)-(2010/01/11(Mon) 17:06:42)
型が違いますね。

integral_params[i].query →
> typedef struct {
>sequence *query;
>float sum;
>} integral_params_t;
より sequence * 型

query_set->seq[i] →
>typedef struct _sequence_set {
>int num;
>sequence *seq;
>} sequence_set;
より sequence 型

query_set->seq なら sequence * 型ですけど。

何をやりたいのか見えないので何ともアドバイスできないです。
(integral_paramsとquery_setとの関係がわからん。)

# sequence_set は
# sequence *seq[]; で、可変長のパラメタをもつ構造体なのかなと予想。
引用返信 編集キー/
■45375 / inTopicNo.18)  Re[12]: C言語のポインタ、配列について
□投稿者/ .SHO (1105回)-(2010/01/11(Mon) 17:21:29)
No45370 (YOU さん) に返信

> typedef struct {
> integral_params_t *integral_params;
> } thread_arg_t;

これじゃぁ、integral_paramsは構造体thread_arg_tの要素であって
integral_params[i].query = query_set->seq[i];
みたいに直接使用することはできません。

引用返信 編集キー/
■45376 / inTopicNo.19)  Re[12]: C言語のポインタ、配列について
□投稿者/ .SHO (1106回)-(2010/01/11(Mon) 17:27:08)
No45370 (YOU さん) に返信

ちなみに、integral_paramsはポインタなので

> これでintegral_params.queryの形はseqenceだと思うのですが違うのでしょうか??
                       ↑
        integral_params->query です。

引用返信 編集キー/
■45382 / inTopicNo.20)  Re[13]: C言語のポインタ、配列について
 
□投稿者/ Azulean (503回)-(2010/01/11(Mon) 19:23:37)
とりあえず、ポインタとはどういったものか、基本的なところから復習(or 勉強)してください。
今のまま、やっつけでコンパイルが通っても実行時に落ちる、あるいは期待した結果が得られない可能性が高いと思っています。
引用返信 編集キー/

次の20件>
トピック内ページ移動 / << 0 | 1 >>

管理者用

- Child Tree -