v[2]在c中的结构方面意味着什么?
我试图理解下面的程序语法和结构v[2]在c中的结构方面意味着什么?,c,struct,C,Struct,我试图理解下面的程序语法和结构 struct virus { char signature[25] ; char status[20] ; int size ; } v[2] = { "Yankee Doodle", "Deadly", 1813, "Dark Avenger", "Killer", 1795 }; main( ) { int i ; for ( i = 0 ; i <=1 ; i++ ) p
struct virus
{
char signature[25] ;
char status[20] ;
int size ;
} v[2] = {
"Yankee Doodle", "Deadly", 1813,
"Dark Avenger", "Killer", 1795
};
main( )
{
int i ;
for ( i = 0 ; i <=1 ; i++ )
printf ( "\n%s %s", v[i].signature, v[i].status ) ;
}
结构病毒
{
字符签名[25];
字符状态[20];
整数大小;
}v[2]={
“洋基涂鸦”,“致命的”,1813年,
《黑暗复仇者》、《杀手》,1795年
};
主要()
{
int i;
对于(i=0;i它将
v
作为virus
结构的数组,包含2个元素,并按照右值中的定义赋值
类似于
struct virus
{
char signature[25] ;
char status[20] ;
int size ;
};
struct virus v[2] = {
"Yankee Doodle", "Deadly", 1813,
"Dark Avenger", "Killer", 1795
};
它将标识符v
定义为2个struct virus
的数组,并用数组初始值设定项的内容初始化
您可以打印其值以查看发生的情况:
#include <stdio.h>
int i;
for (i = 0; i < 2; i++)
printf("%s %s %d\n", v[i].signature, v[i].status, v[i].size) ;
#包括
int i;
对于(i=0;i<2;i++)
printf(“%s%s%d\n”,v[i]。签名,v[i]。状态,v[i]。大小);
这声明了一个包含并初始化两个数组元素的struct virus
数组
在
main()
作用域之前的声明意味着数组将具有全局作用域和静态初始化。数组v
是一个由两个struct virus
组成的数组。在本例中struct virus
的定义中,数组v[]
及其初始化在一个系统中执行。定义和声明可以分开,因此:
struct virus
{
char signature[25] ;
char status[20] ;
int size ;
} ;
struct virus v[2] = { "Yankee Doodle", "Deadly", 1813,
"Dark Avenger", "Killer", 1795 } ;
还要注意,严格来说,示例(及以上)中的初始值设定项是错误的,事实上应该是错误的
struct virus v[2] = { { "Yankee Doodle", "Deadly", 1813 },
{ "Dark Avenger", "Killer", 1795 } } ;
我希望编译器在第一个实例中发出警告,除非警告级别设置得太低。它只是声明了一个长度为2的数组。名为
v
的变量被声明为一个由2个值组成的数组,类型为struct virus
…什么是“我从未见过…”确切地说是指?你从来没有见过数组声明,比如inta[2]
?或者你从来没有见过结构数组?迂腐地说,它是一个struct virus
数组(这有区别,因为virus
在理论上可能是一个完全不相关的类型,因此typedef struct{…})T;
惯用语。)
struct virus v[2] = { { "Yankee Doodle", "Deadly", 1813 },
{ "Dark Avenger", "Killer", 1795 } } ;