数组传递给函数
数组就是指针
void pass(int *param){}void pass (int param[10])
{}
函数返回数组
int *get()
{
static int r[10];
return r;
}
int main()
{
int *p;
p = get();
}
指向数组的指针
int main()
{
int balance[5]={1,3,2,3,1}
int *p;
int i;
p = balance;
printf("%d",*(p+2));
for(i=0;i<5;i++)
{
printf("%d",*(balance + i));
}
}
指针是一个变量,值是另一个变量的地址,即内存位置的直接地址。
指针的递增减在数组里的运用
int main ()
{
int var[] = {10, 100, 200};
int i, *ptr;
/* 指针中最后一个元素的地址 */
ptr = &var[3-1];
for ( i = 3; i > 0; i--)
{
printf("存储地址:var[%d] = %x\n", i-1, ptr );
printf("存储值:var[%d] = %d\n", i-1, *ptr );
/* 移动到下一个位置 */
ptr--;
}
}
指针的比较
ptr <= &var[MAX - 1]
指针数组
char *names[] = {
"Zara Ali",
"Hina Ali",
"Nuha Ali",
"Sara Ali",
};
指向指针的指针
当一个目标被指针指向另一个指针时,访问需要两个*
int var; int *ptr; int **pptr;var = 3000; ptr = &var; pptr = &ptr;
printf("Value of var = %d\n", var ); printf("Value available at *ptr = %d\n", *ptr ); printf("Value available at **pptr = %d\n", **pptr);