#include<stdio.h>
#include<stdlib.h>
int string_length(int (*s)[10], int L, int W)
{
int len = 0;
int i, j;
for (i = 0; i < L; i++)
{
for (j = 0; j < W; j++)
{
len++;
printf("%d ", *(*(s + i) + j));
}
printf("\n");
}
return len;
}
int main(int argc, char** argv)
{
int str[20][10] =
{
{ 2, 1, 3, 1, 1, 1, 1, 1, 1, 1 },
{ 2, 1, 3, 1, 1, 1, 1, 1, 1, 1 },
{ 2, 1, 3, 1, 1, 1, 1, 1, 1, 1 },
{ 2, 1, 3, 1, 1, 1, 1, 1, 1, 1 },
{ 2, 1, 3, 1, 1, 1, 1, 1, 1, 1 }
};
printf("the sizeof this 2d array will be %lu \n", sizeof(str));
printf("the length of the strings will be %lu \n",
sizeof(str) / sizeof(str[0]));
printf("the width of the each string %lu \n",
sizeof(str[0]) / sizeof(str[0][0]));
printf("the result is %d \n",
string_length(str, sizeof(str) / sizeof(str[0]),
sizeof(str[0]) / sizeof(str[0][0])));
int i = 0;
while (i < 10)
printf("hello %d\n", i), i++;
return 0;
}
これは、アドレスを介して参照を行うことを考え出した1つの方法です.他にも多くの方法があることを知っています.2D参照を効果的に行う方法を他の方法でリストアップできますか?? そして、私のコードは少し粗末なので、他の方法でそれを行うことができる方法を誰かが提案できます.そして、カンマ区切りのステートメントは2番目のwhileループでどのように機能しますか??? コンパイラがこれらのステートメントをどのように処理するかは、特別な場合があります。