char[]数组该如何赋值知道

2 02 3 年,我的一个朋友正在学习编程,询问字符数组的用途。
我告诉他三种方法:直接字符串赋值、逐字符赋值、strcpy函数。
但请注意,使用 strcpy 时,数组必须非常大,并且长度必须加一,因为将包含 '\0' 终止符。
他试了一下,说第一种方法很简单,但是不能先定义一个数组然后赋值,必须先初始化。
第二种是逐字符赋值,代码看起来有点长。
至于strcpy,他尽量不要出错,否则很容易出问题。
我请他尝试一下,他点点头说可以。
没关系,他应该明白这一点。

c语言二维数组如何赋值?

抱歉,在谈论二维数组时,它们与一维数组类似,并且使用方式相同。
任务,有两种基本方法,初始化任务和初始化后任务。
声明数组时,必须指定一个数字,即限制。
例如这个例子:int arr1 [2 ][3 ] = {{1 ,2 ,3 },{4 ,5 ,6 }};这里,虽然第二维度的项目数量不能少,但是第一维度的数量可以不用写。
所以: int arr1 [][3 ] = {{1 ,2 ,3 },{4 ,5 ,6 }};第一维中的数字已被删除。

如果省略括号,例如:int arr1 [][3 ] = {1 ,2 ,3 ,4 ,5 ,6 };然后数组中不足的元素将自动用零填充。
但是,如果声明了数组的大小,然后直接赋值,像这样: int arr1 [][3 ] = {1 ,};由于数组大小不清楚,且任务数量小于3 ,因此数组默认只有“一行”,值分别为1 、0、0。
后续的索引可能会向内存输出无序的值,或者可能直接导致错误。

另一种做法是先声明数组的大小,然后给具体位置赋值,或者使用循环赋值。
例如:int arr1 [2 ][3 ]; for(int i=0; i<2 j=0; xss=clean>数组索引,如arr[i][j],也可以用指针表示。
arr的地址与arr[0]在第一维的地址相同,但含义不同。
例如,您可以这样打印: printf("%d", arr[1 ][2 ]); printf("%d", (arr[1 ]+2 )); printf("%d", ((arr+1 )+2 ));
在 C9 9 中,您还可以只初始化特定元素,如下所示: int arr[6 ] = {[5 ] = 2 1 2 };这里第六个元素arr[5 ]被赋值为2 1 2 ,其他元素的默认值为0。

C9 9 还允许使用变量来声明数组的大小,称为VLA(可变长度数组)。
像这样: int arr[m][n];但是,初始化任务在声明时无法执行。

复合赋值也很有趣,像这样:int (pt2 )[4 ]; //声明一个指向4 个整数数组的指针 pt2 = (int[2 ][4 ]){{1 ,2 ,3 ,-9 },{4 ,5 ,6 ,-8 }};这里定义了一个int[2 ][4 ]类型的数组。