C语言 结构体变量地址

#include<stdio.h>

typedef struct student
{
    char name[20];
    int age;
}STU;

int main(){
    STU boy;
    // 结构体的地址=第一个成员的地址(但是类型不同)
    printf("&boy=%p\n",&boy); //STU * 结构体指针
    printf("&(boy.name)=%p\n\n",&(boy.name)); //char * 字符型指针
    
    STU edu[3]={
        {"张三",19},
        {"李四",18},
        {"王五",21}
    };
    //数组名=数组地址=数组第一个元素的地址=数组第一个元素的第一个成员的地址
    printf("张三地址=%d\n", edu);
    printf("张三地址=%d\n", &edu);
    printf("张三地址=%d\n", &edu[0]);
    printf("张三地址=%d\n\n", &(edu[0].name));

    //数组第二个元素的地址=数组名+1=数组第一个元素的地址+1
    printf("李四地址=%d\n", &edu[1]);
    printf("李四地址=%d\n", edu+1);
    printf("李四地址=%d\n",&edu[0]+1);

    //如何访问数组第二个元素(也就是李四)呢?
    printf("name=%s\n", edu[1].name);
    printf("name=%s\n", (edu+1)->name);
    printf("name=%s\n",(&edu[0]+1)->name);
    
    return 0;
}

 

posted @ 2022-04-22 23:50  不会飞的鲨鱼  阅读(1442)  评论(0编辑  收藏  举报