關於pointer

今天看到了關於指針的一文章,說到在用數值型的數組做函數形參的時候,

該函數必須增加一個表示所傳遞的數組長度的整型變量,否則,無法判斷數組的長度。

字符數組作函數形參,無需額外增加長度變量作形參,因爲字符數組存在字符串結束符

例如:

#include <stdio.h>

int GetSum(int Arr[], int size);

void main()

{

  int A[10], i;

  for(i=0;i<10; i++)

  {

  scanf("%d",p++);

  }

   printf(“%d\n”,GetSum(A, 10));

}

int GetSum(intArr[], int size)

{

   intsum=0;

  for(intI=0; i<size; i++)

   {

  sum+= Arr[I];

    }

}

//字符型的

#include <stdio.h>

int GetLen(charArr[]);

void main()

{

  charstr[33];

   gets(str); 

   printf(“%d\n”,GetLen(str));

}

int GetLen(charArr[])

{

     for(inti=0; Arr[i]!=‘/0’;i++);

   return i;

}



總結:

1在平臺確定的情況下,所有指針的sizeof均一樣。
2函數形參爲數組的話,就是爲指針
3所以,在被調函數中,看到的數組,就是指針,so,
4在被調函數中求任何數組的sizeof均一樣,so,
5無法在被調函數中通過sizeof來確定數組的長度,而只能靠
額外參數來告訴被調函數,所傳遞的實參數組長度





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章