
No.2ベストアンサー
- 回答日時:
C言語では、いくつかの例外を除くと、T型の配列=T型のポインタとして扱われます。
p[i] と *(p+i) は同じです。
関数宣言での引数にchar str[] と書いても、 char *str と書いたのと同じです。
int main(int argc,char *argv[]) は int main(int argc,char **argv) の別表記です。
※ このようなものを糖衣構文(syntax suger)と言います
https://ja.wikipedia.org/wiki/%E7%B3%96%E8%A1%A3 …
> 配列は受け取れないということで*strとして引数を設定いていたのですが
void test(int num,char * str[])
としたのでは?
これだと
void test(int num,char ** str)
の意味になります。
argv[1] は char * なので、 char ** とは違います。
C言語の配列とポインタの関係はちょっとややこしいところがあります。
しっかり学習しましょう。
あと、写真を貼るのもいいですが、ソースコードをコピペしていただけると、回答者側でも動作確認がしやすくなります。
書き写し間違いといったミスも防げます。
ご検討ください。
回答ありがとうございます。
納得できました。
また、質問方法へのアドバイスもありがとうございます。
配慮が足りていませんでした、、。
今後はソースコードを直接書き込むようにいたします。
No.3
- 回答日時:
既に回答はあるけど, ちょっと指摘しておこう.
「関数testの引数をchar strとするのとchar *strにするのではどのような違いが生じるのでしょうか?」と書いているけど, その画像の場合関数 test の (第2) 引数は char str じゃなくて char str[] だ. 「配列」を意味する「[]」を無視しちゃいけないぞ.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- C言語・C++・C# 関数ポインタの高速化のメリット 7 2023/05/05 20:15
- C言語・C++・C# C言語で 英文字のみからなる文字列、”Radar”、”WasItACatISaw”、”a”、””(空 5 2022/12/20 15:17
- C言語・C++・C# C言語 配列とポインタについて 2 2022/06/02 11:53
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- Excel(エクセル) エクセルのマイナス表示 3 2022/03/28 16:35
- Excel(エクセル) Indirect関数について、Formulatextで抽出した数式を参照したい。 1 2022/12/15 11:16
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
お助けください!VBAのファイル...
-
UserForm1.Showでエラーになり...
-
【VBA】ワークブックを開く時に...
-
VBAでfunctionを利用しようとし...
-
マクロで"#N/A"のエラー行を削...
-
String""から型'Double'への変...
-
【VBAエラー】Nextに対するFor...
-
「実行時エラー '3167' レコー...
-
Excel vbaについての質問
-
インポート時のエラー「データ...
-
VB.net 重複チェックがしたいです
-
実行時エラー 438 の解決策をお...
-
ApplicationとWorksheetFunctio...
-
Nullの使い方が不正ですのエラ...
-
エクセル 足し算引き算で 空...
-
オブジェクト型の変数にフォー...
-
VBA Find でオートメーションエ...
-
マクロOn Error GoTo ErrLabel...
-
VBA データ(特定値)のある最...
-
助けてください
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
String""から型'Double'への変...
-
【VBA】ワークブックを開く時に...
-
文字列内で括弧を使うには
-
マクロで"#N/A"のエラー行を削...
-
Excel vbaについての質問
-
VBA データ(特定値)のある最...
-
On ErrorでエラーNoが0
-
ApplicationとWorksheetFunctio...
-
【Access】Excelインポート時に...
-
インポート時のエラー「データ...
-
実行時エラー 438 の解決策をお...
-
オブジェクト型の変数にフォー...
-
.VBSだとADODBのプロバイダが見...
-
実行時エラー'-2147467259(8000...
-
【VB.NET】 パワポ操作を非表示で
-
フランスの生年月日(jj/mm/aaaa)
-
【VBAエラー】Nextに対するFor...
おすすめ情報
私も初めは配列は受け取れないということで*strとして引数を設定いていたのですが、main関数内のtest(num,argv[1]);の部分で警告文が出てしまってうまくいきませんでした。
ここで関数testの引数をchar strとするのとchar *strにするのではどのような違いが生じるのでしょうか?
(以下先述した警告文)
incompatible pointer types passing 'char *' to parameter of type 'char **'; take the address with & [-Wincompatible-pointer-types]