[解決済み] 初期化で整数からキャストを使わずにポインタを作成 - C 言語
2022-03-03 07:05:29
質問
この投稿が無知だと思われたら申し訳ないのですが、私はまだC言語を使い始めたばかりで、あまり理解できていません。今、ポインターを理解しようとしています。
このコードは、change関数でbの値を変更し、ポインタを渡すことで(戻らずに)メイン関数に持ち帰ることができるかどうかをテストするために作りました。
しかし、次のようなエラーが発生します。
Initialization makes pointer from integer without a cast
int *b = 6
私が理解したところでは
#include <stdio.h>
int change(int * b){
* b = 4;
return 0;
}
int main(){
int * b = 6;
change(b);
printf("%d", b);
return 0;
}
Ill 私が本当に心配しているのはこのエラーを修正することなのですが、もし私のポインタの理解が完全に間違っているのであれば、批判を受けることに抵抗はないです。
どのように解決するのですか?
動作させるためには、以下のようにコードを書き換えてください。
#include <stdio.h>
int change(int * b){
* b = 4;
return 0;
}
int main(){
int b = 6; //variable type of b is 'int' not 'int *'
change(&b);//Instead of b the address of b is passed
printf("%d", b);
return 0;
}
上記のコードで動作します。
C言語では、関数内で変数の値を変更する場合、以下の方法で変数に値を渡します。 参照 となります。これについては、こちらで詳しく説明されています -。 リファレンスによるパス
このエラーは、タイプキャストせずにポインターの変数に整数を格納しようとしていることを意味します。このエラーをなくすには、この行を次のように変更します(ただし、ロジックはまだ間違っているので、プログラムは動作しません)。
int * b = (int *)6; //This is typecasting int into type (int *)
関連
-
[解決済み] (.text+0x20): `main'への未定義の参照と関数への未定義の参照
-
[解決済み】GCC Cコードで静的宣言が非静的宣言に続くことを解決するには?
-
[解決済み】ヒープ割り当てで初期化されていない値が作成された
-
[解決済み】サイズ8の無効な読み取り - Valgrind + C
-
[解決済み】インクリメントオペランドとして lvalue が必要です。
-
[解決済み】0LLや0x0ULの意味は何ですか?
-
[解決済み】int型配列へのポインタのスカラ・イニシャライザの過剰要素
-
[解決済み】配列型char[]が代入できない [重複]。
-
[解決済み】c - 警告:関数 'printf'の暗黙の宣言
-
[解決済み] 警告: 整数からポインタをキャストせずに返しますが、希望通り整数を返します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「ポインタから異なるサイズの整数へのキャスト」エラーが発生するのはなぜですか?
-
[解決済み】Cコンパイルエラーです。Idは1終了ステータスを返した
-
[解決済み] strtokのセグメンテーションフォールト
-
[解決済み】警告:互換性のないポインタ型からの代入
-
[解決済み】ISO C90では、C言語での宣言とコードの混在が禁止されています。
-
[解決済み】エラー。非スカラー型への変換を要求された
-
[解決済み】sizeof float (3.0) vs (3.0f)
-
[解決済み】C言語で入力が整数型かどうかチェックする
-
[解決済み] C: エラー: ';'トークンの前に ')' があると予想される
-
[解決済み】未定義参照 makefile が間違っているのかも?