
正文
c语言数组定义的错误,c语言中定义数组后,构成数组的各个数组元素具有相同的
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
C语言数组在使用中常见的几种错误
数组定义中不正确的是D项,int d[3][]=1,2,1,2,3,1,2,3,4;一维数组的定义方式为类型说明符数组名[常量表达式]。C语言中多维数组赋初值时可以部分赋值,也可以不指定除第一维以外的其他维的大小,故选项C正确。
但是,数组做形参时,C语言支持中括号里面写入数字,如array[0]、array[1]或array[10]等,但它们都是一样的,作用与写成array[]完全相同。
scanf的格式加\n,含义特殊,不是输入一个回车,而是输入完一个数字后,必须等待一个非空格、制表符、回车的输入,程序才会继续。
相关问答
Q1: C语言。请问下列二维数组定义错误的原因是
1、二维数组第一项必须给定值,因为如果不赋值编译器是不能通过初始化式推断数组大小的。第二项则不是一定要给定值的。因为可以通过初始化式推断。建议都设置值,这是好习惯。
2、(2)如果没赋初值,计算不出x,计算机没法给这个数组分配空间,所以计算机会认为这样是错的。但是如果我们知道x,而不知道y,那么计算机无法计算,没法分配空间,计算机会认为是错的。
3、A) int a[ ][3]; -- 语法错,没带初始化,不允许用 [空白],不允许 数组大小不定。B) int a[ ]={2*3} -- 正确定义了数组,是一维数组,数组元素只有1 个,初始化数值为 2*3 ,就是 6。
4、也可以不指定除第一维以外的其他维的大小,故选项C正确。另外,如果对全部数组元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省,所以选项B正确,而选项D是错误的。
Q2: C语言用define定义常量n为10,定义数组a[n]为什么报错?
1、===#define N 10 int a[N] ;在编译的时候N已经被替换成10,所以明确知道要定义一个10个int型元素的数组。
2、因为str1定义的空间太小,输入的目的字符串已经造成了数组的越界:存储到str1中数据过长,已改写数组存储空间的后续空间所存储的数据。
3、两种都不可以。你光声明的话可能编译器不会报错,但是,你赋值试试就知道了 例如:const int n = 10;int a[n] = {0};不相信的可以自己试试。
Q3: C语言,数组定义,错误
1、B是不对的。数组定义的时候,指定大小的,初始化元素个数可以比分配空间少,但不能超出。B里面开了5个空间,但是却有6个初始化元素,这个是错误的。其它的 都是对的。
2、int a[1][2]一行二列,初始化越界 int a[][3]行没界限,错误,列可以无界限,行必须有界。
3、你前面定义Terms destination[MAX_TERMS];是用MAX_TERMS常量来定义大小的。。所以通过。后面就不对了。你后面用的是结构体数组中的一个结构体成员来定大小,这是变量,当然不可以。。
Q4: c语言char定义数组出错?
因为char *a[10]是指向指针数组,并没有分配存放字符串的空间,应该要自己动态分配。
数组定义中不正确的是D项,int d[3][]=1,2,1,2,3,1,2,3,4;一维数组的定义方式为类型说明符数组名[常量表达式]。C语言中多维数组赋初值时可以部分赋值,也可以不指定除第一维以外的其他维的大小,故选项C正确。
错误一,短语要储存在字符数组或字符串数组中,不能存放在字符变量中。你用char定义变量是错误的,应该用类似char*a;或char a[100];定义才行。看你的题目,用字符指针比较好,容易赋值。
Q5: c语言动态数组定义出错?
1、可以在结构体中添加指针类成员变量,并在成员函数中实现动态数组的分配。以下以一个仅实现整型动态数组,不包含其它功能的类为例做说明。class array //类名{ public: int *v; //动态数组首地址。
2、int **p;//童鞋,动态二维数组不是你这样创建的;你这是创建的指针数组 scanf(%d,&n);k=n*2-1;d=n;p=(int **)malloc(k*k*sizeof(int));二维数组和一维数组的本质是一样的,只是他们指向的元素不同而已。
3、数组在声明时,其成员个数不能是变量,而p是变量,所以编译会出错。
关于c语言数组定义的错误和c语言中定义数组后,构成数组的各个数组元素具有相同的的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。





