C语言笔记 18 —— 指针与数组
传入函数的数组成了什么?
int isPrime(int x, int knownPrimes[], int number0fKnownPrimes)
{
int ret=1;int i;
for (i-0; i<number0fKnownPrimes; i++){
if ( x%knownPrimes [i] =0){
ret =0;break;
}
}
return ret;}
函数参数表中的数组实际上是指针:sizeof(a) == sizeof(int*),但是可以用数组的运算符[]进行运算
数组参数
下列四种函数原型是等价的:
- int sum(int *ar,int n);
- int sum(int *, int);
- int sum(int ar[], int n);
- int sum(int [], int);
*实际上数组变量是特殊的指针
数组变量本身表达地址,所以:int a[10]; int* p=a; //无需用&取地址,但是数组的单元表达的是变量,需要用&取地址(eg. a == &a[0])
[]和*运算符可以对数组做,也可以对指针做
数组变量是const的指针,所以不能被赋值