C语言高级编程:数组名赋值给指针变量的用法解析

C语言高级编程 专栏收录该内容
28 篇文章 10 订阅

代码:

#include<stdio.h>

typedef struct test
{
    int a;
    int b;
    int c;
} TEST;

TEST arr[]={
    {1,2,3},
    {4,5,6},
    {7,8,9}
};

void main(void)
{
    TEST *tmp;
    tmp = arr;

    printf("tmp: %d, %d, %d,%d, %d, %d,%d, %d, %d\n", tmp[0].a, tmp[0].b, tmp[0].c, tmp[1].a, tmp[1].b, tmp[1].c, tmp[2].a, tmp[2].b, tmp[2].c);
    printf("arr: %d, %d, %d,%d, %d, %d,%d, %d, %d\n", arr[0].a, arr[0].b, arr[0].c, arr[1].a, arr[1].b, arr[1].c, arr[2].a, arr[2].b, arr[2].c);
}

 

执行结果:

[baoliw@AONTFN07 ~]$ ./a.out

tmp: 1, 2, 3,4, 5, 6,7, 8, 9

arr: 1, 2, 3,4, 5, 6,7, 8, 9

 

结果分析:

1)数组名可以直接赋值给相同类型的指针变量

2)指针变量可以采用类似数组的用法,如:tmp[0].a

 

注:不能将数组名赋值给数组变量,如:

TEST jj[3];

jj = arr;

编译将产生错误: error: incompatible types when assigning to type ‘struct TEST[3]’ from type ‘struct TEST *’

 

 

  • 1
    点赞
  • 2
    评论
  • 4
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值