㈠ c语言,数组定义时,可以这样写arr[ ] ,不写下标,可以么为什么
只有在直接初始化的时候,可以。
比如 arr[] = {1, 2, 3};
没有初始化时就不可以。
大概就是要知道数组的大小,如果直接就初始化了,那也等于知道数组大小。
更根本的原因就是,语言和编译器的编写者这么设定,并在里面这么实现的。他们喜欢这种方式。
㈡ C语言怎样给字符数组赋值
1、单字符赋值,可通过数组下标方式或指针方式,引用数组元素,进行赋值。
例子:
char a[10];
char ch='a';
for( i=0;i<10;i++ )
a[i]=ch+i ; //可通过数组下标引用数组元素,完成赋值
char *p;
for( p=a; p<a+10; p++ )
*p=ch++; //通过指针对数组相应元素赋
2、字符串赋值,可使用string.h头文件中的字符串操作函数进行赋值。
例子:
char a[10];
strcpy( a, "abcdefgh");
sprintf(a, "%s", "abcdefgh");
(2)c语言数组不带下标赋值扩展阅读:
C语言给字符数组赋值的优点:
1、简洁紧凑、灵活方便
C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
2、运算符丰富
C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
㈢ c语言数组赋值问题
我不清楚你想问什么,不过第二种写法是对的。
char chars[11];//是定义了一个初始值为空总数为11的字符数组。
char s[] = "c language";//定义一个总数为11的字符数组,但是有初值。注意是11个不是10个,用这种方定义的字符数组末尾会加一个\0。
数组的赋值通常是使用花括号来表示的,但是字符数组比较特殊,它可以使用字符串来赋值,当然你也可以使用通用的方式,用花括号来赋值,如{'c', ' ', 'l', 'a'.....}。
㈣ C语言定义一维数组时数组的下标可以省略吧
定义数组形式如下:
1.
inta[5];
如果为全局变量,默认为0,否则值随机。
2.
inta[5]={1,2,3,4,5};
定义长度与元素值。
如果定义的值的数量少于5个,未定义的值初始化为0;
如果多于5个,报错。
3.
inta[]={1,2,3};
定义数组的值,长度为空,表示自动分配一个长度为后面元素个数的数组。
4.
chars[]="adasda";
仅char型数组支持字符串赋值。
注:多维数组只有最高维可以默认。
如
inta[][2]={{1,2},{3,4}};
但是不能定义
inta[][]={{1,2},{3,4}};
㈤ C语言数组下标
下标可以是变量 也可以是常量。直接说a[0],a[1],a[2],a[3]这样的下标就是常量。
对于访问来说, 不在意是变量还是常量, 系统只是需要一个值, 作为偏移量
不管是变量还是常量, 访问的时候 肯定是一个特定值, 而系统要的 无非是这样一个偏移量而已。
㈥ c语言里面数组赋值时可以给部分元素赋值不是下标越界了吗
书上说得很清楚了啊
int a[3]={xx, xx, xx}; 不关心大括号中赋值的内容, 定义后, 如果用a[3]就越界了, 因为你只定义了3个元素, 分别是a[0], a[1], a[2], 没有a[3]的.
㈦ c语言定义数组时可以不写下标也不初始化赋值么(如:int a[];)
不可以。
但作为一个函数参数时,则可以:
void foo(int bar[])
{}
此时的bar,编译器并不会把它当成数组,而会把它当成指针。
㈧ C语言字符串二维数组引用可以省略列下标吗
代码语法上是没有问题的。
(1)c语言的二维数组的每一行都可以看成一个一维数组,如书上的name就可以看成5个一维数组组成的。如果数组恰好定义成char类型,那这些一维数组又可以看成字符串。
(2)代码一开始就是用strcpy函数对这5个字符串赋值。每行的大小只有10个字节,因此它还要检测输入是否越界。老师应该说过,c字符串的结尾要有个结束符0,所以这里的检测直觉上是有问题的,>10改成>=10更好一些。
(3)访问这些一维数组最直接的方法就是书上的做法。name[i]的意思就是第i行的起始地址。在vs编译器上还允许
char *p = name[i];
char (*p)[10] = &name[i];
char (*p)[10] = (char (*)[10])name[i];
可能有些编译器不完全支持
㈨ C语言中怎么给数组某个元素赋值
没有赋值的元素的值都是初始值,写一个循环判断没有赋值的下标,再赋值就可以了!
#include <stdio.h>
void main()
{
int b,c[5]={0,1,2};
for(b = 0;b < 5;b ++){
if(c[b]==0){
c[b]=1;
break;
}
}
printf("%d",c[b]);
}
而且,数组是不能先定义再给它赋值的!
㈩ c语言数组没写下标会发生什么
函数不回了指向了局部数组的指针,局部数组已经过了生命周期被销毁,返回的指针成了野指针,这是错误的。