c语言初始化数组
❶ c语言,结构体数组怎么初始化
对于数组元素很多的初始化可以使用初始化列表方法。在c语言中用于进行初始化的程序结构则称为初始化器或初始化列表。
1、初始化器
初始化器是声明器的可选部分,它由一个'='以及其后的一个表达式(或含有多个以','隔开的带圆括号表达式的单一列表)所组成。后面这一列表有时也被称为“初始化(器)列表”(initializer list)或”初始化列表”(initialization list)。
例:
public class Curry
{public string MainIngredient { get; set; }
public string Style { get; set; }
public int Spiciness { get; set; }}
2、初始化列表
一个类/结构的构造函数可以在定义中于构造函数体前包含一个初始化列表,用以给类/结构的元素赋初值。
例:
class foo
{public:
foo(string s, int i):name(s), id(i){} ; // 初始化列表
private:
string name ;int id ;};
(1)c语言初始化数组扩展阅读
在程序里,数据初始化也可能在没有由明确的语法来实现的情况下进行。例如说,如果一个静态变量在没有初始化(即未指定初值)的情况下被声明,则:对于原生数据类型:以对应类型的零值进行初始化;对于类中的静态对象:由其默认的构造函数来进行初始化。
每一个初始化部分里面的代码在程序运行后,或库的begin-end块运行之前。delphi使用对单元相关树的深度优先遍历来运行初始化部分。换句话说,就只在一个单元的初始化代码运行前,delphi就运行了特他使用的每一个单元的初始化部分。每一个单元仅初始化一次 。
❷ c语言中怎么把一维数组初始化为全零啊,不用循环
下面3种方法:
1.int arr[10]={0};
如果只对数组的一部分进行初始化,则编译器将把其他元素设置为0。因此,当只将第一个元素初始化为0时,编译器会自动将其他元素设为0 (就像前一句说的那样)。
2.int arr[31]={};
3.用memset函数在程序开始时初始化数组。比如:
int arr[1024];
memset(arr, 0, 1024); //清零
(2)c语言初始化数组扩展阅读:
memset()函数原型是extern void *memset(void *buffer, int c, int count) buffer:为指针或是数组,c:是赋给buffer的值,count:是buffer的长度。
函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法 ,它通常为新申请的内存做初始化工作。
❸ C语言字符数组如何初始化
1、直接逐个初始化字符数组:
字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。
char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'};
注意:如果花括号中提供的字符个数大于数组长度,则按语法错误处理;若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即'\0'
)。
2、用字符串常量来初始化字符数组:
在c语言中,将字符串作为字符数组来处理。因此可以使用字符串来初始化字符数组。
char str[]={"I am happy"};
也可以省略花括号。
char str[]="I am happy";
但是,上述这种字符数组的整体赋值只能在字符数组初始化时使用,不能用于字符数组的赋值,字符数组的赋值只能对其元素一一赋值,下面的赋值方法是错误的。
char str[];
str="I am happy";//错误,字符数组的赋值只能按元素一一赋值
❹ C语言之一维数组的初始化
静态变量就是退出函数也不会释放内存空间的变量,他一直作用到程序结束,
每一次运算时,静态变量使用最近一次保留的值。
不加static其实就是默认auto int a;这是自动变量,退出函数时释放内存空间,下一次使用该变量会重新分配空间,从新定义存储值。
❺ c语言数组定义了数值之后可以重新初始化吗
不可以。
二维数组如果只写一个下标,代表一行的起始地址,不代表具体元素。
那里可是这样写一维,是因为字符串的操作函数正好要的是地址。
❻ 简单的c语言数组初始化
一般对数组初始化可以用以下方法实现:
1、在定义数组时对数组元素赋以初值。如:
static int a[10]={0,1,2,3,4,5,6,7,8,9};
经过上面的定义和初始化后,a[0]=0,a[1]=1,…,a[9]=9。
2、初始化时可以只对一部分元素赋初值。例如:
static int a[10]={0,1,2,3,4};
定义的数组有10个元素,但只对其中前5个元素赋了初值,后5个元素初值为0。
3、如果想使一个数组的元素值全部为0,可以用下面的方法:
static int a[10]={0,0,0,0,0,0,0,0,0,0};
不能用:
static int a[10]={0*10};
如果对static型数组不赋初值,系统会对定义的所有数组元素自动赋以0值。
4、在对全部数组元素赋初值时,可以不指定数组长度。
❼ c语言数组初始化
数组的编号是从0开始的,所以当i=2时,score[2]实际是第三个数,前面还有score[0]和score[1]两个数。
❽ c语言数组初始化问题
初始化
赋值
是不同的概念
希望楼主每天对这两个概念默念一遍
在任何基础C编程书中都有介绍这两个概念的
❾ C语言数组初始化问题
memset(a, 0, sizeof(a))这是库函数,构成了C语句,要在执行时操作,所以要占用执行时间。而a[10000]={0}是编译器完成的,就是说代码编译完成后那10000个元素就成为0了,执行的时候里面的0已经是现成的。但前者可以把10000个元素预置成任何一个合法的值,而后者要初始化成1的就得写10000个1,那谁也不想干。只有初始化为0时可以a[10000]={0} 这样写,如果写成a[10000]={1}想达到初始化为全1是徒劳的,除了a[0]=1外,其余的还是0……
❿ c语言如何初始化数组
举例说明:
第1种定义部分初始化:int a[4]={ 1,2,3,4 };
第2种运行时初始化:int a[4],i; for ( i=0;i<4;i++ ) a[i]=i+1;
第3种运行时手动输入值初始化:int a[4],i; for ( i=0;i<4;i++ ) scanf("%d",a+i);
第4种读取文件初始化:
int a[4]; FILE *fp; if ( fp=fopen("Init.dat","rb") ) { fread(a,sizeof(a),1,fp); fclose(fp); }