C言語の配列の処理について
関数に配列を渡して処理し、メインで表示するプログラムの書き方について
・どの書き方が一番いいですか?それぞれのメリットデメリットはありますか?
・配列の受け渡しは下記の方法以外にありますか?
・コード2で宣言しているグローバル変数bufについてstaticを付けるべき場面が分かりません。どういった場面で使うべきですか?
該当のソースコード
C
1//1 2#include<stdio.h> 3char* func(char * buff){ 4 for (size_t i = 0; i < 64; i++) 5 { 6 buff[i] = buff[i] + 1; 7 } 8 return buff; 9} 10int main(void){ 11 char buf[64]; 12 for (size_t i = 0; i < 64; i++) 13 { 14 buf[i] = i + 0x30; 15 } 16 17 char *result = func(buf); 18 19 for (size_t i = 0; i < 64; i++) 20 { 21 printf("%c ",buf[i]); 22 } 23 printf("\n"); 24}
C
1//2 2#include<stdio.h> 3static char buf[64]; 4void func(){ 5 for (size_t i = 0; i < 64; i++) 6 { 7 buf[i] = buf[i] + 1; 8 } 9} 10int main(void){ 11 for (size_t i = 0; i < 64; i++) 12 { 13 buf[i] = i + 0x30; 14 } 15 16 func(); 17 18 for (size_t i = 0; i < 64; i++) 19 { 20 printf("%c ",buf[i]); 21 } 22 printf("\n"); 23}
C
1//3 2#include<stdio.h> 3void func(char * buff,int buff_size){ 4 for (size_t i = 0; i < buff_size; i++) 5 { 6 buff[i] = buff[i] + 1; 7 } 8} 9int main(void){ 10 char buf[64]; 11 for (size_t i = 0; i < 64; i++) 12 { 13 buf[i] = i + 0x30; 14 } 15 16 func(buf,64); 17 18 for (size_t i = 0; i < 64; i++) 19 { 20 printf("%c ",buf[i]); 21 } 22 printf("\n"); 23}
結果
./main 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p
どのような問題があるのでしょうか。
https://teratail.com/help/avoid-asking
>問題・課題が含まれていない質問
>teratailは困っている人の質問を解決するサービスです。そのため、漠然とした興味から票を募るような質問や、意見の主張をすることを目的とした投稿は推奨していません。
>
>何か困っている理由があり、最適解を見つける為の知見を得たい場合は、その理由や何が知りたいのかを明確に記述してください。
>悪い例:「オススメの開発環境構築方法を教えてください」
>良い例:「Dockerで開発環境を構築していて、ファイルの書き込みができません」
(もうBAが選ばれてしまっているけど)なんか話がぼんやりしていて,何を訊きたい話なのかがよくわからない.
少なくとも,この質問文を見た読み手には
> グローバル変数を安易に多用する
といった話題を含む話だとは読み取れないと思う.
(上記引用は,BAになってる質問へのコメントより抜粋)
そもそも本件の話自体が
> 関数に配列を渡して処理し、メインで表示するプログラムの書き方について…
っていう書き出しになってるから,逆に「極めて限定的な範囲の話」だと捉えるんじゃないかなぁ.
すなわち,BAになってる回答に書かれているような「赤の他人が使う可能性のあるコードを書いているような状況」のことではなくて,例えば「サイズ64を前提としてよい/処理対象の配列自体,特定のものとしてよい」ようなコードを書いている場面に関する話あろう,と.
回答4件
あなたの回答
tips
プレビュー