Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

Cが配列パラメーターをポインターとして扱うのはなぜですか?


Cは、時間と効率が低いため、配列パラメーターをポインターとして扱います。ただし、配列の各要素のアドレスを引数として関数に渡すことができれば、より時間がかかります。したがって、最初の要素のベースアドレスを次のような関数に渡すことをお勧めします:

void fun(int a[]) {
…
}
void fun(int *a) { //more efficient.
…..
}

Cのサンプルコードは次のとおりです:

#include

void display1(int a[]) //printing the array content
{
   int i;
   printf("\nCurrent content of the array is: \n");
   for(i = 0; i < 5; i++)
      printf(" %d",a[i]);
}

void display2(int *a) //printing the array content
{
   int i;
   printf("\nCurrent content of the array is: \n");
   for(i = 0; i < 5; i++)
      printf(" %d",*(a+i));
}
int main()
{
   int a[5] = {4, 2, 7, 9, 6}; //initialization of array elements

   display1(a);
   display2(a);
   return 0;
}

出力

Current content of the array is:
4 2 7 9 6
Current content of the array is:
4 2 7 9 6

  1. アレイが回文であるかどうかをチェックするCプログラム

    任意のサイズnの配列arr[]が与えられた場合、私たちのタスクは、配列が回文であるかどうかを確認することです。回文は、MADAM、NAMANなどのように、同じように前後に読み取ることができるシーケンスです。 したがって、配列が回文であるかどうかを確認するために、-のように配列を前後にトラバースできます。 例 Input: arr[] = {1, 0, 0, 1} Output: Array is palindrome Input: arr[] = {1, 2, 3, 4, 5} Output: Array is not palindrome 以下で使用されるアプローチは次のとおりです

  2. Cの配列内の範囲の積

    配列、L、R、Pを入力として指定し、タスクは、モジュロの下の積を出力としてLとRの間の範囲を見つけ、それを表示することです。 図に示されているように、要素の配列と、2としての左の値であるLと2としての右の値であるRがあります。ここで、プログラムはそれらの間の範囲の積を見つける必要があります。 例 Input-:  A[] = { 1, 2, 3, 4, 5, 6 }    P = 29  L = 2 R = 6 Output-: 24 Input-: A[] = {1, 2, 3, 4, 5, 6},    L =