c语言字符数组的初始化
A. c语言数组的初始化表示方法
不是inta[] 而是例如int a[10]这种。括号内一定要有个常量数字。
我们可以这样定义内
#define N 5
int a[N]
这表明了数组容名为a;数组有5个元素;分别是a[0]到a[4];
对于数组来说;数组是变量的集合,因此数组也具有与变量相同的数据类型和储存类型。数组的类型就是它所有的变量的类型。在定义数组时,应在数组名前对数组的类型加以确定。如上面的int a[10];则表明了数组内元素均为整形。
所有当表示浮点型可以定义为例如float a[10]。 举例如下:
(1)c语言字符数组的初始化扩展阅读
数组名是由用户命名的C语言标识符,要遵循标识符命名规则。数组名表示数组存储区域的首地址。数组的首地址也就是第一个元素的地址。数组名是一个地址常量,不能对它赋值。
数组名后是由方括号括起来的常量表达式,不能使用其他括号
B. 关于C语言字符数组初始化的问题如 char str[256]={'\0'};,除str[0]
你这样赋值
C. C语言数组字符串初始化问题
一、没有char s[5]={"abc"}; 这种写法。
除了char s[5]="abc"; ,还有char s[5]={'a','b','c'};这两种写法。
两种写法的区别是 char s[5]="abc"; 在后门自动加一个0,习惯上称之为“字符串数组”;而char s[5]={'a','b','c'};不会再结尾加0,一个称之为“字符数组”。
二、s【0】是只能存放一个字符的存储空间,只能存放一个字符,不可能存放字符串abc 。
如有疑问请留言。
D. C语言 字符数组 初始化问题 char a[10000000] = {0};
Windows系统默认用户栈抄大袭小为4M(约4000000)。
现在用了10000000字节当然会溢出。
为什么编译器没报警告呢?原因:编译器编译时并不做检查。
可以尝试将堆栈设置更大(具体怎么设置请网络)
要么将其放到函数外,也就是作为全局(静态)变量存在,那就不受限了(不过最多也就是4G),故编译可以通过。
E. c语言的字符串数组初始化问题
字符串来至少要有一个结束符源
%s的打印,是以结束符为标志的
两点要理解
1、字符串和字符数组是不一样的两个东西
虽然都是这么定义,但是字符串需要\0这个结束符,字符数组不需要
2、变量的内存模型
程序运行时,要申请内存来保存变量的数据,并且是紧挨着的,具体顺序我忘记了,有的编译器可能不同
按你的程序,str1在前,str2在后,并且是紧挨着的,str1 5个内存空间,紧挨着str2 4个空间,后面可能还要空间没有使用
你输入abcde后,占用6个空间,吧str2的一个空间占用了,这里是不检查越界的
接着输入abcd,把str1的结束符覆盖掉,并且也是越界,因为str2是4个字符空间,结束符要占一个,是5个空间,把内存中str2后面的一个内存写入结束符,如果后面还有变量的话,程序会出错
这样打印%s时,str1检查结束符是str2后面的结束符,所以是abcdeagcd,str2是abcd
F. C语言字符数组如何初始化
C语言允许用字符串的方式对数组作初始化赋值。例如:
static char c[]={'c',' ','p','r','o','g','r','a','m'}; 可写为:
static char c[]={"C program"}; 或去掉{}写为:
static char c[]="C program";
当对全体元素赋初值时也可以省去长度说明。例如:static char c[]={`c`,` `,`p`,`r`,`o`,`g`,`r`,`a`,`m`};这时C数组的长度自动定为9。
(6)c语言字符数组的初始化扩展阅读:
数组的使用规则:
1.可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。例如:static int a[10]={0,1,2,3,4};表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。
2.只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能写为:static int a[10]=1;请注意:在C、C#语言中是这样,但并非在所有涉及数组的地方都这样,数据库是从1开始。
3.如不给可初始化的数组赋初值,则全部元素均为0值。
4.如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数。例如:static int a[5]={1,2,3,4,5};可写为:static int a[]={1,2,3,4,5};动态赋值可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。
网络-数组
G. C语言中 字符串数组的初始化格式是怎么样的
比如:
char
a[10]="\0";
用API
memset(a,'\0',sizeof(a));
也可以写个for来完成
记得点赞啊
H. c语言如何先声明后初始化字符数组
在定义的时候就对数组进行赋值操作称为初始化;
先定义后赋值并不能称为初始化,只能叫做对数组进行赋值操作。
举例如下:
chara[]="abcd";//定义(声明)字符数组a,并进行初始化
//以下为数组的赋值操作
charb[5];//定义(声明)一个字符数组b
//对字符数组每个元素进行赋值
b[0]='a';
b[1]='b';
b[2]='c';
b[3]='d';
b[4]='e';
I. C语言中字符数组的初始化含有多个'\0'该怎么办,具体如图
因为第二张图中打印语句用的是%s,即打印字符串,所以在第一个\0就会停止
但第一张图中打印语句用的是%c,即打印字符,所以每个字符都会打印,多个\0会分成多串,但不会终止
J. C语言字符数组初始化的问题
char *a[ ]={"asdf","asdfsadf"}这个是指针数组,相当于char *a[2]={"asdf","asdfsadf"}
然后第一个是char a[1] = {'a','s','d'},char a[2] =......
char a[ ]={"asdf","asdfsadf"} 这样是不行的,如果是字符数组,就得用单引号,双引号是字符串,
char m1[ ]={'a','b','c''\0'} 这个是字符数组,
char m1[ ]={'a','sdfb','c''\0'},这样是不行的,单引号里面是一个字符,双引号才能出现连续字符。
如有不明可以追问。