指针和数组的问题。该如何定义指针变量并赋值。

2025-04-04 23:10:32
推荐回答(3个)
回答1:

int a[10]={1,2,3,4,5,6,7,8,9,10};
int *p;
p=a;
printf("%d %d",p[4],*(p+4));
指针变量是数据的地址,数组a 本身就是一个地址 ,访问某个地址中的值 一般用 *(指针变量)
还有不懂的请追问 还望采纳

回答2:

#include 

int main(int argc, char *argv[])
{
    int a[5] = {1, 2, 3, 4, 5};
    int *p = NULL;
    
    //可以认为p=&a[0];
    p = a;
    printf("a:%d %#x\n", *p, p);
    
    //和&a[0]一样
    p = (int *)&a;
    printf("&a:%d %#x\n", *p, p);
    
    //a[4]就是数组a的第5个元素,它的地址可以赋给p
    p = &a[4];
    printf("&a[4]:%d\n", *p);
    
    //a往后偏移4位,每一位就是一个int *,这样往后偏移了4个int指针后指向的就是最后一个int指针了,赋值给p
    p = a+4;
    printf("a+4:%d\n", *p);
    
    return 0;
}

回答3:

令p指向第5个元素即a[4],等价于将p向后移动4个元素:p+=4。