当前位置:主页 > 世相新闻 >
世相新闻
  • 如何为字符数组赋值
  • 本站编辑:小编发布日期:2019-01-30 00:44 浏览次数:
Main(){chars[30]; strcpy(s,“好消息!
“); / *为数组指定字符串* /。
编译前一个程序时,如果在声明[30]中找到该字符,编译器会在内存中的某处留下30个字节的空间,并将第一个字节的地址分配给s。
找到strcpy时(strcpy是TurboC2)。
0)功能,首先创建“GoodNews!”。它位于目标文件中的某个位置。
/ 0“字符串。
如果/ 0表示字符串的结尾,则编译器添加终止符,然后将字符复制到标记为s的内存区域中。
因此,在定义字符串数组时,元素的数量必须至少比字符串的长度多一个。
备注:1。
字符串数组不能直接用“=”赋值,即s =“。
“这不合法。
因此,有必要区分分配字符串数组和字符串指针的不同方法。
2
在长绳的情况下,Turbo C2。
我同意使用以下方法。例如:main(){chars[100]; strcpy(s,“Thewriterwouldletothankyouforououououououou”)因为我对这本书很感兴趣。
你可以从这本书中获得一些帮助。“
“)。
}
指针数组赋值
例如:int * a[2]; f[0]=“谢谢”; / *为字符数组指针变量赋值。* / f[1]=“GoodMorning”; * a[0]= 1,* a[1]= - 11。/ *将整数数组指针变量的值赋给* /。
}
------------------------------------------------------------------------------------------------------------------
他补充说:
静态数组,本地数组或全局数组仅包含定义时的第一个单词。否则,它必须以其他方式实现,例如循环。
无论inta的内容如何[3]。a[3]={1,2,3}; b[3]={1,2,3};定义初始化不正确。
-------------------------------------------------------------------------------------------------------------------
它的转载如下。在学习了多年的C语言之后,我突然发现即使是字符串赋值也是错误的。真的很难过。
字符[10];如何为此矩阵赋值
1.定义时,使用字符串直接指定chara[10]=“hello”。注意:它不能像chara[10]那样定义和分配。a[10]=“你好”;这是一个错误!
2.使用strcpychara[10]={'h','e',??'l','l','o'};一次将字符分配给矩阵一个字符。strcpy(a,“你好”);
容易出错的情况:1,字符[10]。a[10]=“你好”; //一个角色如何保持链?
而且,没有[10]。
2,人物[10]。a =“hello”; //虽然这是一个指针,但它指向分配给堆栈的10个字符空间,因此这种情况会短暂出现。这种情况是指向数据区的hello常量。指向这个的指针令人困惑,我不同意。
此外,您不能使用两个关系运算符==来比较两个字符串。只需使用strcmp()函数即可。
您无法在C语言运算符中操纵字符串。
因为字符串被视为C矩阵,所以字符串就像矩阵一样受到限制。特别是,您无法复制它们并将它们与运营商C进行比较。
尝试直接复制或比较字符串将失败。
例如,假设str1和str2具有以下语句:
Charstr 1[10],str 2[10];
您不能使用=运算符复制字符数组中的字符串。
Str1 =“abc”; / ***错误*** /
Str 2 = str 1; / ***错误*** /
C将这些语句解释为指针和指针之间的(非法)赋值。
但是,使用字符矩阵=初始化是合法的。
Charstr 1[10]=“abc”;
这是因为=不是声明中的赋值运算符。
尝试使用关系运算符或等效运算符来比较字符串是合法的,但它不会产生预期的结果。
是(str1 == str2)
/ ***坏*** /
该语句将str1和str2作为指针进行比较,而不是比较两个矩阵的内容。
由于str1和str2具有不同的地址,因此表达式str1 == str2的值必须为0。
-------------------------------------------------------------------------------------------------------------------------------------
如果你有时间,请检查动态矩阵的定义。
无论矩阵有多大,有时它都是未知的。
然后我希望你可以在运行时改变矩阵的大小。
动态数组与调整大小一样大。一般来说,静态矩阵是在定义矩阵时由操作系统分配的空间,例如inta[10]。这是系统分配10个int类型的空间。可以初始化该空间,例如inta[10]={1,2,3,4,5,6,7,8,9,10,10};然后,在此定义之后系统首先分配十种int类型存储然后排列键中间数按顺序分为十个空格。
您所要做的就是写下这句话,系统将执行矩阵赋值操作。当然,初始化与否取决于你的需求,初始化不是必需的,要初始化,不想发出,或在前面的例子将会继续:INTA[10];即使他们在这里定义即使它没有初始化,也没有问题。将来,您可以替换自己的值,如[1]= 8。a[5]= 3。或者如果(int i = 0; i 10; i ++)a[i]= i;或者等于动态矩阵,则将其初始化。由于动态矩阵在定义时只是一个指针作为int * a,因此变量a是这里指向int类型的指针,而不是矩阵。
我们动态分配十个int类型元素的数组,如下所示。α=(INT)的malloc(10 *的sizeof(int)的);将很明显,这是不可能初始化指针被定义,当它到,例如,这是错误的:INT *一={1,2,3,4,5,6,7,8,9,10};这是一个错误。
* / a是一个只有4个字节的指针,因此没有可用于需要初始化的变量的存储空间。
----------------------------------------------------------------------------------------------------------------------------------------------------
第三部分初始化矩阵。
1.可以初始化矩阵的初始矩阵。也就是说,在定义时,程序可以包括可以立即使用的值。
例如,以下代码定义了一个全局矩阵,并使用一系列Fibonacci数进行初始化。intiArray[10]={1,1,2,3,5,8,13,21,34,55); // voidmain()来初始化{//。
初始化数组的数量不得大于数组元素的数量。省略逗号后,不能省略初始化矩阵的值。这在C中达成一致,但在C ++中不被接受。
例如,以下代码错误地初始化数组:intraryl[5]={1,2,3,4,5,6}; //错误:比所述初始化值的数的矩阵元素的数目大。intarray2[5]={1,2,3,4}; //错误:初始化值intarray3[5]={1,2,3,}不能被忽略。//错误:intarray4[5]={}中不能忽略初始化值。//错误:语法格式错误voidmain(){//。
如果初始化值的数量小于数组元素的数量,则以先前的顺序初始化相应的值,并且随后的初始化为0。全局或静态)或未定义的值(局部矩阵)。
例如,以下程序初始化矩阵。************************* ** ** ch7 _ 2
Cpp ** // *********************
#includeiostream
时间
Intarray 1[5]={1,2,3};静态intarray 2[5]={1};
Voidmain(){intarr 1[5]={2}; staticintarr 2[5]={1,2};
(N = 0; nn ++)cout“”array1[n];
Cout“/ nglobalstatic:/ n”;(n = 0; nn ++)cout“”array 2[n];
Cout“/ nlocal:/ n”;(n = 0; nn ++)cout“”arr1[n];
COUT “/ nlocalstatic:/ N”(N = 0; NN ++)COUT “” ARR2[N];如果coutendl;}
执行结果如下。全球:l 2300克globalstatic:
10000local:223567235672356723567localstatic:进入主功能后,对于12000,初始化完成全球矩阵和执行主函数之前全局静态矩阵,局部矩阵和局部静态矩阵的初始化完成我会的。。
全局数组arrayl[5]初始化初始化表1,2,3的值,这两个元素的值是默认初始化为0。
全局静态数组2[5]与初始化全局矩阵相同。初始化表(1)中的值表示第一个元素的值,而不是矩阵的所有元素。
局部矩阵ARRL[5]根据初始化表的值的内容的顺序初始化。由于初始化表中只有一个值,因此仍有四个元素的值不确定。
这两个都是23567值。
本地静态数组ARR2[5]根据所述初始化表初始化顺序,所述阵列的剩余的三个元素的值是默认初始化为0。2.有两种方法可以初始化字符数组以初始化字符数组。一个是chararray[10]={“hello”};另一个如下。chararray[10]={ 'H', 'E', 'L', 'L', '/μ0'};第一种方法是更通用。在初始化时,系统主动使用矩阵中没有值的位置,并添加“/ 0”。
另外,可以省略该方法的关键。也就是说,它可以表示如下。chararray[10]=“你好”;在另一种方法中,与一个整数数组的初始化,并且在初始化时一个元件的矩阵。
这种方法通常用于输入键盘不易生成的不可见字符。
例如,以下代码初始化一系列选项卡。charchArray[5]={ '/ T', '/ T', '/ T', '/ T', '/ 0');请不要忘记。最后,'/ 0'指定一个空格。
假设您要初始化“hello”字符串。在这种情况下,定义的数组至少有六个数组元素。
例如,以下代码初始化一个数组,但它可能导致不可预测的错误。chararray[5]=“你好”;它不编译由代码生成的错误,但由于它被重写的存储单元阵列的区域之外是很重要的。
3.初始化矩阵定义省略矩阵大小您可以在括号中省略矩阵大小。
例如,以下代码的矩阵被定义为五个元素。inta[]={2,4,6,8,10},矩阵的大小需要在编译时知道。
通常,声明数组时方括号中的数字决定了矩阵的大小。
有被初始化矩阵定义,如果在方括号中省略了矩阵尺寸,编译器通过计数括号之间的元素数找到一个矩阵的大小。
例如,以下代码将产生相同的结果。staticinta1[5]={1,2,3,4,5}; staticinta2[]={1,2,3,4,5};几个优点尺寸,以获得一个初始化矩阵编译器有。它通常用于初始化初始化期间确定的一组元素。这允许程序改变元素的数量。
如何在不指定矩阵大小的情况下知道矩阵的大小?
操作规模克服了这个问题。
例如,以下代码使用sizeof来确定数组的大小。
// ********************* // ** ch7_3。
Cpp ** // *********************
#includeiostream
时间
I(sizeof(a)/ sizeof(int)); i ++)couta[i]“”; Voidmain(){staticinta[]={1,2,4,8,16}coutendl;}
执行结果如下。当执行124816sizeof操作时,for循环主动调整次数。
如果要向初始化的数组中添加或删除项,只需重新编译即可,无需更改任何其他内容。
每个矩阵的存储容量可以通过计算大小来确定。
Sizeof返回指定元素中的字节数。
sizeof通常用在数组中,以增加16位机器和32位机器之间的代码可移植性。在字符串初始化中,数组的实际分配空间大小如下所示。字符串中的字符和尾随'/ 0',终止符。
例如,以下代码定义了一个字符数组。
// ********************* // ** ch 7 _ 4。
Cpp ** // *********************
#includeiostream
时间
Voidmain(){charch[]=“howareyou”;
“sizeofarray:”sizeof(ch)endl;结果如下。sizeofarray:12sizeofstring:ll在此示例中,数组的大小为12,字符串的长度为11。
矩阵大小的缩写只能在初始化矩阵定义上执行。
例如,以下代码导致编译错误:inta[]; //错误:矩阵的大小不固定。在定义矩阵时,编译器必须知道矩阵的大小。