拙く読みにくいかもしれませんがよろしくお願いいたします。
前提・実現したいこと
下記のプログラムをポインタ配列変数*argv[]を使わず、argc,argv, *argv, **argv, argv++を使って表したいのですが、どのようにしたらいいのでしょうか?
該当のソースコード
C言語
1#include <stdio.h> 2 3int main (int argc, const char * argv[]) { 4 5 int i ; 6 7 printf("argc = %d\n", argc) ; 8 printf("&argv = %p\n", argv) ; 9 10 for(i=0 ; i < argc ; i++) 11 printf("&argv[%d] = %p, argv[%d] = %p -> \"%s\", *argv[%d] = 12 ’%c’\n", i, &argv[i], i, argv[i], argv[i], i, *argv[i]) ; 13 14 return 0; 15}
###自分なりに書き換えたプログラム
C言語
1#include <stdio.h> 2 3int main (int argc, const char **argv) { 4 5 int i ; 6 7 printf("argc = %d\n", argc) ; 8 printf("&argv = %p\n", argv) ; 9 10 for(i=0 ; i < argc ; i++) 11 printf("&argv+%d = %p, argv+%d = %p -> \"%s\", *(*argv+%d) = ’%c’\n",i, &argv+i, i, *argv+i, *(argv+i), i,**(argv++)) ; 12 13 return 0; 14}
試したこと
argv は現在処理すべき文字列へのポインタである。
*argv は現在処理すべき文字列(文字へのポインタ)である。
**argv は現在処理すべき文字列の最初の文字である。
argv + 1 は現在処理すべき文字列の2字目に対するポインタである。&argv[0][1] と同じである。
だから現在処理すべき文字列の2字目は、(*argv+1)である。
などのことを考えながらしたのですが、完成させることができませんでした。
回答2件
あなたの回答
tips
プレビュー