您的位置:首页 > 编程语言 > C语言/C++

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

2014-06-21 00:00 218 查看
废话不说了,先看看常规的指针写法:

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});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: