C语言特殊语法(六)复合表达式

废话不说了,先看看常规的指针写法:

char *str = "helloworld";
int array[3] = {1, 2, 3}, *ptr = array;

对字符指针来说,可以直接赋值,这是比较爽的一件事。可是整型或浮点型指针却不能直接赋初值,还得先定义一个数组,再让指针指向数组,这样就难免显得繁琐了。

这里说下任意指针赋初值的一个写法:

char *str = (char []){"helloworld"};
const char *sstr = (const char []){"helloworld"};
int *ptr = (int []){1, 2, 3, 4};
float *fptr = (float []){1.1, 2.2, 3.3, 4.4};

在面向对象的语言如C++、Python、Java中,可以传递匿名对象作为参数。在有了上面的那种写法后,C语言也类似有了C++、Java的影子,例如:

//void sort(int *p, int len)
sort((int []){3, 7, 2, 9, 1, 4}, 6);

对结构体也一样的用法,如:

struct book
{
    char name[16];
    float price;
};

void print_bookinfo(struct book *bk)
{
    printf("name: %s\nprice: %.2f\n", bk->name, bk->price);
}

print_bookinfo(&(struct book){"C-Programming", 60.0});


转载于:https://my.oschina.net/pzc/blog/282703

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值