[解決済み】初期化がキャストなしで整数からポインタを作成 - C言語
2022-01-28 15:16:57
質問
この投稿が無知だと思われたら申し訳ないのですが、私はまだC言語を使い始めたばかりで、あまり理解できていないのです。今、ポインターを理解しようとしています。
このコードは、change関数でbの値を変更し、ポインタを渡すことで(戻らずに)main関数に持ち帰ることができるかどうかをテストするために作りました。
しかし、次のようなエラーが発生します。
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 *)
関連
-
[解決済み】変数の警告が設定されているが使用されていない
-
[解決済み】ISO C90では、C言語での宣言とコードの混在が禁止されています。
-
[解決済み】「無効なイニシャライザー」と表示されるのですが、何が間違っているのでしょうか?
-
[解決済み】スレッド1:EXC_BAD_ACCESS(コード=1、アドレス=0x0)標準Cメモリ問題
-
[解決済み】エラー。非スカラー型への変換を要求された
-
[解決済み】「複数の定義」「最初に定義されたのはここです」エラーについて
-
[解決済み] char pointers: 'char*' から 'char' への無効な変換?
-
[解決済み】なぜか。"エラー: 配列型を持つ式への代入"
-
[解決済み] Cプログラムで「配列の添え字が整数でない」。
-
[解決済み] 警告: 整数からポインタをキャストせずに返しますが、希望通り整数を返します。
最新
-
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 言語の添え字で配列の要素値を代入すると、配列でもポインタでもベクトルでもない値になる
-
[解決済み】C言語におけるファイルスコープでの可変長配列の変更
-
[解決済み】デバッガgdbの使用時に不明な終了シグナルが発生する。
-
[解決済み】エラー:イニシャライザー要素がロード時に計算可能でない
-
[解決済み】LEALアセンブリ命令は何をするのですか?
-
[解決済み】エラー。非スカラー型への変換を要求された
-
[解決済み】fgetsによるセグメンテーションフォールト(コアダンプ) - と思う。
-
[解決済み】「複数の定義」「最初に定義されたのはここです」エラーについて
-
[解決済み] '{'トークンの前に期待される式
-
[解決済み】c - 警告:関数 'printf'の暗黙の宣言