c语言 中花括号有哪些作用?

除了界定符还有什么?
但是在说花括号只能作为函数体的定界符是错在哪?具体点!我知道一般绝对的语气是错的!

大括号的作用是把内部的多个语句绑在一起,当成一个语句。 在c中大括号的作用是将很多语句复合为一个语句块,在这个大括号括起来的语句块中可以定义变量,该变量内存出了该语句块就会被释放。 char a[10] = {“abcde”};
这个表达式正确。我让他继续改一下这个例子:
char a[10] {="abcde"};
问他这样行不行。那读者以为呢?为什么?错误

花括号的作用是什么呢?我们平时写函数,if、while、for、switch 语句等都用到了它,但有时又省略掉了它。简单来说花括号的作用就是打包。你想想以前用花括号是不是为了把一些语句或代码打个包包起来,使之形成一个整体,并与外界绝缘。这样理解的话,上面的问题就不是问题了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-04

花括号"{" "}"主要是为了表示一段代码是一个部分,。主要有以下集中用法

    函数

    int func() {  ...}   此处的花括号表示将这个部分括起来,是开始和结束的标志

    宏定义

    #define   ADD(X,Y)     { X+Y;}   只是单纯的把整个部分包含起来

    数组赋值

    int a[] = {1,2,3};

    函数内部使用

        用于特定语法  如 if(){ ..}    while(..){  ...} 等

第2个回答  2019-08-16
这可能是用者在SDK下开发的,用于在sdk下面嵌入一个web浏览器
如果你了解一些COM知识,就想到你需要什么来使浏览器COM对象运行
你要提供四个对象给浏览器对象:IStorage,
IOleInPlaceFrame,
IOleClientSite,
和IOleInPlaceSite。这是四个结构,每个都有自己的VTable,这些结构和他们的VTable都在头文件中用C定义好了。他们每个都有自己的一系列成员函数。
IStorage对象,它定义了称为IStorageVtbl的Vtable结构。在这个VTable中一共有18个函数指针(也就是说IStorage本身就有18个特定的函数,这也是为什么大家更多的使用MFC,.NET,WTL以便来使工作更简单轻松)。当然前三个函数也必须为QueryInterface(),
AddRef(),和Release()。在CWebPage.c中我把这三个函数命名为Storage_QueryInterface(),
Storage_AddRef(),和Storage_Release(),后面的15个方程我都是用Storage_来开头的,它们是Storage_OpenStream(),
Storage_CopyTo()等等,IStorage的函数的作用是管理程序和磁盘的读写的,具体的作用和参数可以参考MSDN关于IStorage的文档。
也就是说在MSDN里面有关于对他们的注释,你没仔细看,我也懒的找!
创建IStorage的最简单的办法是把它声明为全局变量,并且用18个函数指针来初始化它,代码就是你那里面的第一个花括号,现在知道什么意思了没,就是定义指针!
现在就有了一个全局的初始化好了的IStorage的VTable----MyIStorageTable
下一步就是创建IStorage对象。最简单的还是把它声明为全局的变量并且初始化它,它只有一个VTable:
IStorage
MyIStorage
=
{
&MyIStorageTable
};
现在就有了IStorage的被初始化好了的全局对象MyIStorage。现在操作系统的函数随时可以调用这个对象并把它交给浏览器对象这样它就可以调用上面的18个函数了。
如果看不懂,就好好找找MSDN的注释
TO
楼主:
IStorage不是一个实际意义上的函数或者结构,虽然他被称之为结构,但是我的理解不是,它必须要有一定的
条件才能被称为结构,就是必须定义了一个有实际意义的指针或者用途,而IStorageVtbl正是用它包含的
函数定义完了的实际意义,MSDN上没注释,是因为它只有被定义过才会有实际用途,我也查过一遍,的确是没怎么介绍,我初步估计可能是用者自己的定义,只有定义成功以后才会有初始化完的VTable,这样才能继续创建对象,否则不是成了空锅里放了米想煮饭,岂不明白有米有锅也未必能煮成饭,必须要有一定的条件啊
第3个回答  2019-05-09
这可能是用者在SDK下开发的,用于在sdk下面嵌入一个web浏览器
如果你了解一些COM知识,就想到你需要什么来使浏览器COM对象运行
你要提供四个对象给浏览器对象:IStorage,
IOleInPlaceFrame,
IOleClientSite,
和IOleInPlaceSite。这是四个结构,每个都有自己的VTable,这些结构和他们的VTable都在头文件中用C定义好了。他们每个都有自己的一系列成员函数。
IStorage对象,它定义了称为IStorageVtbl的Vtable结构。在这个VTable中一共有18个函数指针(也就是说IStorage本身就有18个特定的函数,这也是为什么大家更多的使用MFC,.NET,WTL以便来使工作更简单轻松)。当然前三个函数也必须为QueryInterface(),
AddRef(),和Release()。在CWebPage.c中我把这三个函数命名为Storage_QueryInterface(),
Storage_AddRef(),和Storage_Release(),后面的15个方程我都是用Storage_来开头的,它们是Storage_OpenStream(),
Storage_CopyTo()等等,IStorage的函数的作用是管理程序和磁盘的读写的,具体的作用和参数可以参考MSDN关于IStorage的文档。
也就是说在MSDN里面有关于对他们的注释,你没仔细看,我也懒的找!
创建IStorage的最简单的办法是把它声明为全局变量,并且用18个函数指针来初始化它,代码就是你那里面的第一个花括号,现在知道什么意思了没,就是定义指针!
现在就有了一个全局的初始化好了的IStorage的VTable----MyIStorageTable
下一步就是创建IStorage对象。最简单的还是把它声明为全局的变量并且初始化它,它只有一个VTable:
IStorage
MyIStorage
=
{
&MyIStorageTable
};
现在就有了IStorage的被初始化好了的全局对象MyIStorage。现在操作系统的函数随时可以调用这个对象并把它交给浏览器对象这样它就可以调用上面的18个函数了。
如果看不懂,就好好找找MSDN的注释
TO
楼主:
IStorage不是一个实际意义上的函数或者结构,虽然他被称之为结构,但是我的理解不是,它必须要有一定的
条件才能被称为结构,就是必须定义了一个有实际意义的指针或者用途,而IStorageVtbl正是用它包含的
函数定义完了的实际意义,MSDN上没注释,是因为它只有被定义过才会有实际用途,我也查过一遍,的确是没怎么介绍,我初步估计可能是用者自己的定义,只有定义成功以后才会有初始化完的VTable,这样才能继续创建对象,否则不是成了空锅里放了米想煮饭,岂不明白有米有锅也未必能煮成饭,必须要有一定的条件啊
第4个回答  2008-08-02
错了
还可以做为局部作用域
#include <stdio.h>
main()
{
{int a=3;}
printf("%d",a);
}
提示error C2065: 'a' : undeclared identifier

很多地方也有用
数组 int a[]={3,5};
自定义类型 enum A{B,C,D};
怎么说也不只函数体的界定附啊..for、if、switch,他们有{}但不是函数吧本回答被提问者采纳
相似回答