指向指针的指针定义方法
,例如int
**p
定义了一个指针变量p,他指向另一个指针变量(该指针变量又指向一个整型变量),是一个2级指针,由于指针运算符*是按自右向左顺序结合,因此上述定义相当于:int
*(*p)
(*p)是指针变量形式,它外面的*表示p指向的又是一个指针变量,int表示后一个指针变量指向的是指针变量
怎样使一个指针变量指向另一个指针变量呢?
int
**p1
int
*p2
int
i=3
p2=&i
(使p2指向i)
p1=&p2
(使p1指向p2)
那个地址 是被指向的变量的地址。当指针刚声明完毕时,它并无指向的地址,只有当指针与 某有存储地址的变量发生联系时,才有指向地址。
例如:
int *p // 这时 p 没有指向地址
int a=3,b=14
p = &a 这时 p 指向了 变量 a 的地址了.
// 数值 *p 等于 a 里存放的数值。 printf("%d", *p) 得 3。
这时,若 a = a+1 输出 printf("%d", *p) 得 4。
p = &b p 指向了 变量 b的地址 了,输出 printf("%d", *p) 得 14 啦。
main(){int
a[10]
//定义数组a为整型
int
*p=a,i
//p指向a的地址,即a[0]的地址
for(i=0i<10i++)
scanf("%d",&a[i])
//给数组a赋值
printf("\n")
for(p-ap<(a+10)p++)
//输出数组元素
printf("%d",*p)
//p++表示p指向数组中下一个元素的地址
}
暂时先写这么多,你一开始没给p赋值是不对的~