数组
- 传递数组给函数
double getAverage(int arr[], int size)
{
int i;
double avg;
double sum=0;
for (i = 0; i < size; ++i){
sum += arr[i];
}
avg = sum / size;
return avg;
}
int main ()
{
int balance[5] = {1000, 2, 3, 17, 50};
double avg;
avg = getAverage( balance, 5 ) ;
printf( "平均值是: %f ", avg );
return 0;
}
- 函数返回数组: 返回一个指向数组的指针
int * getRandom()
{
static int r[10];
int i;
srand((unsigned)time(NULL));
for(i=0;i<10;++i){
r[i] = rand();
}
return r;
}
int main()
{
int *p;
int i;
p=getRandom();
for(i=0;i<10;i++){
printf("*(p+%d):%d\n",i,*(p+i));
}
return 0;
}
- 传递指针给函数
void getSeconds(undigned long *par)
{
*par = time(NULL);
return;
}
getSeconds(&sec);
- 函数返回指针
int * getRandom()
{
srand((unsigned)time(NULL));
r[3] = rand();
return r;
}
p = getRandom();
printf("%d",*p);
指针
运算符
&
: 返回变量地址
*
: 指向一个变量
优先级
- NULL: 声明变量时若无确切地址, 可赋一个NULL值
int *ptr = NULL;
- 地址0x0, 多数系统不允许访问地址0的内存, 表明不指向一个可访问的内存位置.
运算
- 增减
- 递增
ptr++
: 指向下一个元素的存储单元
- 递减
ptr--
: 指向前一个元素的存储单元
- 跳跃的字节数取决于指针指向的变量数据类型长度(int4字节)
- 比较
- ==, <, >
ptr <= &var[MAX-1]
指针数组
int *ptr[MAX];
ptr[i]=&var;
x=*ptr[i];
const char *names[]={ // 指向字符的指针数组来存储一个字符串列表
"KCZX",
"XHYZ",
"TJDX",
"GKGZ",
};
指针指针
int **ptr2;
ptr1 = &V;
ptr2 = &ptr1;
printf("%d",V);
printf("%d",*ptr1);
printf("%d",**ptr2);