那一朵太阳花 发表于 2022-2-21 16:23:03

指针懵懵



第二题中p与*p? int *p=&a为什么这样操作啊?

人造人 发表于 2022-2-21 19:56:41

把数组a的第5个元素的地址给指针变量p,有什么问题吗?

ba21 发表于 2022-2-22 13:25:46

#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 是一个元素的值。

}

yzzc 发表于 2022-2-25 16:28:42

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]
查看完整版本: 指针懵懵