-
字符数组的赋值有两种类型:单字符赋值和字符串赋值。
可以通过数组下标或指针引用数组元素来执行单字符赋值,例如:
char a[10];
char ch='a';
for( i=0;i<10;i++
a[i]=ch+i ;数组元素可以由数组下标引用以完成赋值。
char *p;
for( p=a;p 字符串赋值,可以使用头文件中的字符串操作函数完成,例如:
char a[10];
strcpy( a, "abcdefgh");
sprintf(a, "%s", "abcdefgh");
注意:定义数组时,可以同时初始化,但定义完成后,不能以初始化的形式赋值,如:
char a[10]="abcdefgh";没关系。
-
错误,不能使用赋值语句将字符串常量直接分配给字符数组。
chars[20];
charss="hello";
s=ss;错误的原因是你不能使用赋值语句将字符数组直接赋值给字符串数组,即你必须使用 strcpy() 函数来实现字符串的副本(在 C 中,但在 C++ String 类中,上面的赋值是正确的)。
由于赋值字符“=”右侧的表达式也可以是赋值表达式,因此以下形式变量为 =(variable = expression); 这是真的,所以它是嵌套的。 后者的一般形式是:variable=variable=....=表达式; 例如:
a=b=c=d=e=5;根据赋值算子的正确网格划分,其有效等价为:e=5; d=e;c=;
chara="toyou";正确的原因:因为当你声明一个数组变量时,你只是为它腾出空间并初始化它,这就是 c 语法。
-
你可以使用它,也可以不使用它。
#include ""
void main()
b[10],c[10];
int i,*p=a;
for(i=0;i<10;i++)
b[i]=a[i];无指针分配。
for(i=0;i<10;i++)
c[i]=*(p+i);使用指针赋值。
for(i=0;i<10;i++)
printf("%d ",b[i]);
printf("");
for(i=0;i<10;i++)
printf("%d ",c[i]);
printf("");}
-
要将数组的所有元素分配给另一个数组,如果它是字符数组,请使用 strcpy 或 strncpy,如果它是非字符数组,请使用 memcpy 函数。
void * memcpy ( void * destination, const void * source, size_t num );
你也可以使用 for 循环
int i;
int n = sizeof(a)/sizeof(a[0]);
for(i=0;如果必须使用指针,则可以这样做。
int i = 0;
int n = sizeof(a)/sizeof(a[0]);
while(i < n)
-
int main()
int array[10];
for(int i=0;i<10;i++)i 不能超过数组的最大长度。
a[i]=i;
return 0;
c 语言循环语句:
同样的问题通常可以通过使用 while 语句、do-while 语句或 for 语句来解决,但在实践中,应根据具体情况选择不同的循环语句。 选择的一般原则是:
1) 如果在执行循环体之前确定了循环数,则通常使用 for 语句。如果循环数由循环的执行决定,则通常使用 while 语句或 do-while 语句。
2) 当循环体至少执行一次时,使用 do-while 语句,反之,如果循环体可能不会执行一次,则使用 while 语句。
在 C++ C 循环语句中,for 语句使用最频繁,其次是 while 语句,很少使用 do 语句。
for、while 和 do-while 这三种类型的循环语句可以相互嵌套并自由组合。 但是,重要的是要注意,循环必须完整,并且不得相互交叉。
-
二维数组赋值的一般形式为:datatype arrayname[length1][length2]。 result二维字符数组可以这样赋值, result[0][0]=seq1[0] ; result[1][0]=seq2[0]。
数据类型 arrayname[length1][length2],其中 datatype 是数据类型,arrayname 是数组名称,length1 是一维下标的长度,length2 是二维下标的长度。
例如:int a[3][4],定义一个 3 行 4 列的数组,总共 3 个 4=12 个元素,数组名称为 a,即
a[0][0], a[0][1], a[0][2], a[0][3]
a[1][0], a[1][1], a[1][2], a[1][3]
a[2][0], a[2][1], a[2][2], a[2][3]
在预召唤的二维预数组中,要定位一个元素,必须给出一个和两个下标,就像确定平面上的一个点一样,才能知道 x 和 y 坐标。 例如,a[3][4] 表示数组 a 的第 3 行第 4 列中的元素。
-
初始化是必需的。
以下是一些示例:char s[20]; s="helo";这是错误的,因为不能使用赋值语句将字符串常量直接分配给字符数组。
char s[20];
char ss="hello";
s=ss;这也是错误的,因为你不能使用 assignment 语句将字符数组直接分配给字符数组。
也就是说,字符串的复制(在 C 中,但在 C++ String 类中,上述赋值是正确的)必须使用 strcpy() 函数实现。
而 char a[ ]=“toyou” 是因为当我们声明一个数组变量时,我们为它腾出空间并初始化它,使其符合 C 语法。 而且上面的不是语法上的。
-
首先要做的是弄清楚什么是字符串指针,什么是字符数组。
字符串指针只是一个指针,就像你上面 A 中的 s 没有初始化一样,那么如果你调用读取字符串函数,数据要写入 ** 怎么办? 我不知道,因为 s 不知道它指向哪里。
char *s; s="abcdef";这是什么意思? 此操作是添加一个字符串 ("abcdef"已经存在于内存中),只需将字符串的第一个地址分配给 s,这意味着 s 指向字符串。您可以将此字符串视为在编译时确定的数据。
我们可以使用它。 但你不能改变他的价值。
什么是字符数组? 首先,我们需要弄清楚数组是什么,比如 int array[4]=; 这是什么意思?
它是四个连续的整数。 类似地,字符数组是连续的 n 个字符,例如 char arr[3]=;
这是一个包含三个元素的数组,分别是 a b c,它看起来“好像”是一个字符串,为什么是“好像”,因为它与字符串根本不同。 字符串由 n 个连续字符 + '0' 组成,我们上面的例子只有 n 个连续字符,没有 '0'。 所以它不是一个字符串。
为了便于使用,编译器允许我们按以下方式初始化字符串。
1:char *s="abcdef";
2:char ss[10]="abcd";
3:char sss[10]=;
以上三个都是正确的,但存在差异。
1:如上所述,内存中已经存在的字符串的第一个地址被分配给 s
2:这是将内存中已经存在的字符串复制到 ss 数组中的过程,其效果是系统中有两个相同的字符串。
3:与2相同
-
B 首先申请一个字符串指针,然后将其指向“ABCD”的第一个地址。
-
使用字符串'\0'作为决赛入围者,没有足够的空间给 c,因为添加'\0'应该有 6 个空格;
d 不存储'\0',只能说是 5 个字符,而不是字符串。
-
这里有一个建议:
正如 C++ Primer 中提到的,定义数组的名称是一个指针,这意味着我现在定义一个这样的数组。
int ia[5];
当我单独使用 IA 时,它通常只是一个指针。 (仅当使用 decltype 时才是数组)。 默认情况下,ia 指向第一个元素,并且可以使用下标递增该元素。 例如:
auto p = ia;
p 的类型是 int*,它指向 ia 的第一个元素,即 ia[0]p[2] 获取第一个 * (p+2) 元素。
当然,也可以这样写:
int *p2 = ia;
p2[2] =20;
在程序中,c 是指向存储指针的数组的指针,因此取消引用 *c 以获取第一个元素,相当于 c[0],即获取数组中的第一个指针,然后再次取消引用以获取数组指针指向的地址。
-
*c 是一个指针,可以是 int、char、unsigned int 等。
而 int 等是数据类型。
由于 c 是指针,因此必须这样表示(形状指针、字符指针、..)没错)你把它理解为 int;这意味着 c 成为指针,并直接成为普通的形状属性表。
-
根据 int (*c)[20]=&b;如果我们知道 c 的值是 &b,那么 *c *&b 不是 b 吗?
虽然 b 是一个 int 类型的一维数组,但 b 当然是一个 int*。
也就是说,c存储了数组b的地址,c指向的值(*c)自然是数组b,b的类型是int*。
-
int (*c)[20] =b;
c 得到,你得到的是 int [20],而不是 [20],它等价于一个地址值,你必须用 * 再次执行此操作才能获得元素值。
-
字符数组不与 char 一起使用。
复数 inta[10] 表示数组元素不代表整个数组,数组实际上是 a[0] 到 a[9],具有相同的 10 个元素,并且没有 a[10]。
int a[10]=;顺便说一下,定义一个数组就完成了整个数组的初始化(这是初始化,而不是“整体”操作赋值。
分两步,int a[10]; 首先定义数组
a[10]=;然后使用数组 你不能用数组“全局操作”,记住不要尝试在 C 语言中“全局操作”来为整个数组分配一个值。
-
初始化和赋值是不一样的......原理......这是规则。
您可以尝试输出,scanf 函数是从缓冲区读取的数据,第二个字符串的数据是空格或换行符制表符。 您可以单独读取它们,但在两者之间添加 fflush(stdin); 清除缓冲区。
你学过C语言吗?
首先:和ch有什么关系,str是一个指针,ch,是一个数组的第一个地址,虽然这两个地址可以是同一个地址,但是它的含义却大不相同,ch不能用数组的名称给它赋值,定义大小后,就想想你给10个孩子糖, 你不能只给第一个,然后其他孩子会不理你,我不是说你也明白。 >>>More