问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言 程序设计 关于数组的初始化

发布网友 发布时间:2022-05-14 05:24

我来回答

2个回答

热心网友 时间:2024-02-24 10:49

你好!!!
char s[]="BOOK"
char s[10]="BOOK"
都表示在声明数组的时候,就初始化,就是先了定义,即给数组分配了内存空间,系统并把字符“BOOK”,放到刚才的空间里,所以是符合语法的。

但是
char s[10];
s[10]="BOOK"
和 char s[10];
s[]="BOOK"
都是错误的,原因是:语法规定字符数组要是在声明的时候没有初始化,就没有机会直接赋值了(具体的原因后面再说)
要想赋值,必须用strcpy()
但是我们定义字符指针就不一样了,比如:
char *p;
p="hello";表示此时定义了一个指针变量,此时系统会把字符串="hello";放到内存的静态存储区(即内存的一种,是静态的原因是里的值是不能修改的)并把字符串的首地址赋值给指针变量p,使指针变量指向字符串;这是可以的。

现在我们看看:
char s[10];
s[10]="BOOK"
和 char s[10];
s[]="BOOK"
到底是什么原因:
char s[10];首先声明了字符数组,但是没有分配空间,接着
s[10]="BOOK"因为现在的是数组s已经声明过了,系统会先字符串放到静态存储区,然后返回一个指针,但是此时等号左边是数组而且有10个字节这么大,等号两边都是不同类型的,怎么可以赋值呢???
编译器检查错误就会报错了。

呵呵,希望lz可以理解。

热心网友 时间:2024-02-24 10:50

前面两个是初始化运行的,其等号并不是赋值操作。

后面char s[10];
s[10]="BOOK"
和 char s[10];
s[]="BOOK"
这里面=是赋值操作。

字串不能直接赋值,要用strcpy。
和静态储存无关。
C语言数组的初始化表示方法

C语言中,数组的初始化方式多种多样,主要通过大括号来实现。例如,像这样:int a[]={1,2,3}; 这表明数组a被初始化为包含三个元素,每个元素的值分别为1、2和3,相当于等同于int a[3]={1,2,3}。当你使用int a[3]={0};,则会将数组a的所有元素设置为0,初始化得非常明确。然而,有...

c语言数组初始化的正确格式是什么?

数组初始化:a[数组元素个数]={各元素的值用,连接} A 写成括号不对 B {}中没写值,不对 C 正确,数组直接赋初值可以不标数组元素个数,会根据后面赋值个数自动分配空间 D 正确,但要注意这样写只是给a[0]赋值10,其余的9个赋值为0,而不是将十个都赋值成1。

c语言中怎么把一维数组初始化为全零啊,不用循环

在C语言中,有多种方法可以快速将一维数组初始化为全零,无需使用循环。以下是三种常见的方法:1. 直接使用花括号初始化:首先,你可以直接在定义数组时指定所有元素为0,如:int arr[10]={0};。这种方法适用于数组的长度已知且希望所有元素均为0的情况。如果仅初始化部分元素,编译器会自动为剩余元...

在C语言中数组的初始化是如何定义的?

变量可以在定义的时候初始化,数组也可以。array[5]={1,2,3,4,5};在定义数组时,可以用放在一对大括号中的初始化表对其进行初始化。初始化值的个数可以和数组元素个数一样多。如果初始化的个数多于元素个数,将产生编译错误;如果少于元素个数,其余的元素被初始化为0。如果维数表达式为空时,那...

c语言如何将数组初始化成0?

intmain(void){ intarr[1024]={0};//ThiswillmakeallZERO //statements } 3、可以用memset函数在程序开始时初始化数组。这条命令这在已经修改了数组之后又想将它重置为全0特别有用。intarr[1024];arr[5]=67;memset(ZEROARRAY,0,1024);//ThiswillreinitializealltoZERO ...

C语言数组定义时初始化占用几个字节啊?

数组在定义的时候就已经分配了内存,由于定义的数组x的空间长度为5,因此数组x在内存中所占用的字节数为4*5也就是20个字节。另外,数组初始化int x[5]={0,2,4},是将数组前三个元素也就是x[0],x[1],x[2]依次赋值为0,2,4,而后面两个元素是赋值为0,并非没有给它们分配空间。

C语言数组的初始化表示方法

C语言数组的初始化表示方法有4种,分别是:1、定义的同时进行初始化,我们同样用数组的初始化引出结构体的初始化,我们知道数组在定义的同时进行初始化的代码如下:int nums[] = {1, 3, 5};由此可推出结构体在定义的同时进行初始化的代码如下:struct Person p = {"lee", 23, 1.8};2、先...

c语言中怎么把一维数组初始化为全零啊,不用循环

1.int arr[10]={0};如果只对数组的一部分进行初始化,则编译器将把其他元素设置为0。因此,当只将第一个元素初始化为0时,编译器会自动将其他元素设为0 (就像前一句说的那样)。2.int arr[31]={};3.用memset函数在程序开始时初始化数组。比如:int arr[1024];memset(arr, 0, 1024); //...

在C语言编程中,定义一个数组时要不要初始化?

不是不能初始化,是初始化的不对。另外,数组最好用memset初始化。(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)初始化时可以只对一部分元素赋初值。例如:...

C语言数组的初始化表示方法

int a[N]这表明了数组名为a;数组有5个元素;分别是a[0]到a[4];对于数组来说;数组是变量的集合,因此数组也具有与变量相同的数据类型和储存类型。数组的类型就是它所有的变量的类型。在定义数组时,应在数组名前对数组的类型加以确定。如上面的int a[10];则表明了数组内元素均为整形。所有当...

C语言数组初始化后初值 C语言字符数组初始化 c语言数组初始化0 c语言数组没有初始化 c语言数组必须初始化吗 c语言数组初始化方式 c语言中数组初始化 c语言初始化数组全为1 c语言怎么初始化字符数组
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
上海大名城映_有多少户? 英特尔处理器漏洞有哪些害? 英特尔漏洞都会影响哪些CPU?下一代还会影响吗? cpu使用率100%是怎么回事呀? 生姜红茶减肥法骗局 鲁东大学大一新生电话卡是用的学校发的联通卡吗? 鲁东大学用移动的多还是用联通的多?求师哥师姐们解答 ...牙齿一碰到溃疡就疼,治疗口腔溃疡的偏方有哪些呢? 我想找一个飞车情侣名字,我有车队,车队名字是丿茗门丨灬 梦幻悟空传变态版安卓APK 我爸血脂血压都不高,患有冠状动脉粥样硬化,该吃什么药? 冠状动脉粥样硬化如何治疗 冠状动脉粥样硬化怎么样治疗,有没有人知道 冠状动脉粥样硬化性心脏病的治疗方法有哪些? 急求一个QQ号和密码!快! 冠壮动脉弱样硬化吃什么药 支付宝可以转账到银行账户(卡号?) 冠状动脉粥样硬化硬性心脏病吃什么药好?? 支付宝怎么自己转入自己银行卡号 目前治疗冠状动脉粥样硬化的药物主要有那些?都有些什么功能?谢谢! 冠状动脉粥样硬化性心脏病吃什么药好 考驾照C1-C4什么意思 excel中分母固定 分子递增 考驾照C1需要什么步骤? 初一英语日记60字10篇 10篇初一英语日记 急需初一暑假英语日记10篇 求七年级的十篇英语日记(带汉语)谢谢 初一暑假英语日记10篇 英语日记 10篇 初一上下册的 60词 请问冠状动脉粥样硬化应该怎么治疗?需要长期服药吗?【冠状动脉粥样硬化】 微信定的火车票学生票怎么改成人票 冠状动脉粥样硬化.有糜烂性胃炎病史.我应该吃什么药 如何治疗冠状动脉粥样硬化心脏病 我在微信上买了一张票,没有勾选学生票,但是票上显示了一个“学生”,我买成学生票了吗? 冠状动脉粥样硬化 在微信上买火车票买的是成人票那可以到代售点说明改学生票并优惠吗? 微信里买火车票的预约买票,添加人信息填了学生,但价格仍是原票价,如果抢到票能退钱买学生票价吗? 如何办理个人所得税完税中英文版 大神神们呀,企业税收完税证明的一项:开具原因:转开 是什么意思?翻译成英文,翻译成什么比较好? 怎样理解境外公司企业所得税完税证明 在同一部手机上怎么注册另一个? 代练 弹弹堂 急求 炫舞代练 要求帮忙刷一生一世我爱的称号。 你们搭建代刷网用哪家公司的主机 一个手机号怎么申请第二个? 要在买保险前体检吗? 年轻人买保险要检查身体吗 天津哪有卖氢气或者供应氢气的氢气站,我是家礼仪公司,放氢气球用!急需 三个月宝宝突发高烧,应该如何处理?