「C言語/中級者向けの話題」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
Fix ref
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
→‎配列の文法についての制限: C言語では、FortranPerl のような配列同士の一括代入はできません。
タグ: 2017年版ソースエディター
1 行
== 配列の文法についての制限 ==
=== 配列は一括代入できないません ===
C言語では、[[Fortran]] や [[Perl]] のような配列同士の一括代入はできないません
 
<syntaxhighlight lang="c" line>
#include <stdio.h>
 
int main() {
int a[] = {2, 3, 5, 7, 11},
{
int a b[]sizeof =a {/ 2,sizeof 3, 5, 7, 11 },*a];
for (int i = 0; i < b[sizeof a / sizeof *a]; i++)
printf("b[3i] = %d\n", ba[3i]);
for (int i = 0; i < sizeof a / sizeof *a; i++)
printf("b[i3] = a%d\n", b[i3]);
printf("b[3] = %d\n", b[3]);
return 0;
}
</syntaxhighlight>
のように、要素ごとに代入する必要があります
<syntaxhighlight start=5 lang="c" line>
int a[] = { 2, 3, 5, 7, 11 },
</syntaxhighlight>
は、一見すると配列に代入しているように見えますが、これは初期化の構文である
 
また、
27 ⟶ 25行目:
for (int i = 0; i < sizeof a / sizeof *a; i++)
</syntaxhighlight>
の <syntaxhighlight lang="c" inline>sizeof a / sizeof *a</syntaxhighlight> は、「配列の要素数」を得る時のイデオムである
 
== 関数 ==