宿題です 関数とポインタについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 宿題です 関数とポインタについて

Re: 宿題です 関数とポインタについて

#2

by maru » 7年前

Node 構造体の内容がわからないと正しい回答ができないのですが、

コード:

typedef struct tagNode {
	int	num;
	struct tagNode*	next;
} Node;
であると仮定して、

コード:

    if(p->num==key){
とすればいいです(&が余分)。

なお、listsearch 関数で p が正しく初期化されていません。
先頭のポインタを引数で渡すなどの対策が必要です。

宿題です 関数とポインタについて

#1

by モノクローム » 7年前

線形探索のプログラムの一部で,構造体リストから探索するための関数です.
が,警告が出てしまいました.

警告: ポインタと整数との比較を行なっています [デフォルトで有効]
if(&p->num==key){
と出てしまいます.
どうすれば直るのでしょうか.

listsearch(int *key)とすると警告: 1 番目の ‘listsearch’ の引数へ渡すときに整数からキャス ト無しにポインタを作成しています [デフォルトで有効]となってしまいました.

そもそもポインタについての理解が浅いので,的外れな質問をしていたらすみません.

コード:

int main(void){

  int key;

  gen_list();
  printf("key number : ");
  scanf("%d",&key);
  search_list(key);

  return 0;
}

コード:

int listsearch(int key)
{
  Node *p;
  while(p!=NULL){
    if(&p->num==key){
      printf("hit");
    }else{
      p=p->next;
    }
  }
  printf("key number not found\n");
  return 0;

}

ページトップ