[解決済み] 引数を渡すと、キャストせずに整数からポインタを作成します。
2022-02-15 20:31:53
質問
Stack Overflowで同様の質問にいくつか目を通しましたが、今回の警告を理解するのに役立つ質問を見つけることができません。私はC言語を学び始めて最初の週なので、私が理解不足でStack Overflowの他の場所で明白な答えを見逃していたら、申し訳ありません。
以下のような警告と注意書きが表示されるのですが。
warning: passing argument 2 of ‘CheckIfIn’ makes pointer from integer without a cast [enabled by default]
if(CheckIfIn(letter, *Vowels) ){
^
note: expected ‘char *’ but argument is of type ‘char’
int CheckIfIn(char ch, char *checkstring) {
このコードをコンパイルしようとしたとき。
#include <stdio.h>
#include <string.h>
#define CharSize 1 // in case running on other systems
int CheckIfIn(char ch, char *checkstring) {
int string_len = sizeof(*checkstring) / CharSize;
int a = 0;
for(a = 0; a < string_len && checkstring[a] != '\0'; a++ ){
if (ch == checkstring[a]) {
return 1;
}
}
return 0;
}
// test function
int main(int argc, char *argv[]){
char letter = 'a';
char *Vowels = "aeiou";
if(CheckIfIn(letter, *Vowels) ){
printf("this is a vowel.\n");
}
return 0;
}
解決方法は?
Vowels
は
char*
,
*Vowels
は単なる
char
, 'a'.
char
は自動的に整数に昇格し、コンパイラは暗黙のうちにポインタに変換することを許可しています。 しかし,そのポインタの値は
Vowels
これは、文字'a'の整数エンコーディングに等しいアドレスで、ほぼ全世界で0x61となります。
を渡すだけです。
Vowels
を関数に追加します。
関連
-
[解決済み】「ポインタから異なるサイズの整数へのキャスト」エラーが発生するのはなぜですか?
-
[解決済み】式は、単純なポインタ演算を使用して完全なオブジェクト型へのポインタでなければなりません【重複】。
-
[解決済み】メモリー・クロバリング・エラー
-
[解決済み】「複数の定義」「最初に定義されたのはここです」エラーについて
-
[解決済み] [Solved] .Cファイルをコンパイルしています。アーキテクチャ x86_64 の未定義シンボル
-
[解決済み】インクリメントオペランドとして lvalue が必要です。
-
[解決済み】0LLや0x0ULの意味は何ですか?
-
[解決済み】C言語のフォーマット文字列でデータ引数が使用されない [重複]。
-
[解決済み】シンプルなC言語のscanfが機能しない?重複
-
[解決済み】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 - 初期化がキャストなしでポインタから整数を作る、さらに2つのコンパイラーエラー
-
[解決済み】C言語で浮動小数点例外(コアダンプ)発生
-
[解決済み】スレッド1:EXC_BAD_ACCESS(コード=1、アドレス=0x0)標準Cメモリ問題
-
[解決済み] テスト
-
[解決済み】式は変更可能なL値でなければならない
-
[解決済み】警告:組み込み関数'printf'の非互換な暗黙の宣言(デフォルトで有効]
-
[解決済み】malloc():メモリ破壊
-
[解決済み】インクリメントオペランドとして lvalue が必要です。
-
[解決済み】スタックスマッシュを検出しました
-
[解決済み】execvp: バッドアドレスエラー