指针懵懵
第二题中p与*p? int *p=&a为什么这样操作啊?
把数组a的第5个元素的地址给指针变量p,有什么问题吗?
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int a[] ={5,15,34,54,14,2,52,72};
int *p = &a; // a 元素的地址赋给p
int b[] ={0};
int *p1 = b;
printf("%d\n", p); // 使用指针转数组方式索引元素。p == *p(指针和组数使用方式可互转)
printf("%d\n", p[-2]); // p[-2] == *(p-2)
printf("%d\n", *(p-2)); // p-2 地址-2个int型大小,*(p-2)取该地址的值。
printf("%d\n", p[-8]);
printf("题2:\n");
printf("%d\n", p1); // p1 得到的是一个地址。*p1才是元素的值。
printf("%d\n", b); // b 是一个元素的值。
}
int a[]={……}
int *p=&a这个意思是指针指向数组a的地址
p[-2] =54 因为指针p指向a的地址,现在p[-2]就是a往前移2位a的值,所以是54
int a[]={0} 这个就相当于开辟了1个int类型的空间
int *p=a; 这个意思是指针指向数组a的地址
&a意思是取数组a的地址
*p意思是去数组a里面的值也就是0
p和a是等价的,因为指针指向的是数组
页:
[1]