c语言 字符串数组 赋值,C语言字符串数组赋值方式

kodinid 13 0

大家好,今天小编关注到一个比较意思的话题,就是关于c语言 字符串数组 赋值问题,于是小编就整理了4个相关介绍c语言 字符串数组 赋值的解答,让我们一起看看吧。

  1. 怎么给字符串数组赋值?
  2. 怎样将CString变量赋值给字符数组?
  3. 如何对字符型数组赋值(C语言)?
  4. 怎么把一个字符串赋值给字符数组?

怎么给字符串数组赋值?

给字符数组赋值分两种情况,单字符赋值和字符串赋值。

单字符赋值,可通过数组下标方式或指针方式,引用数组元素进行赋值,如:

c语言 字符串数组 赋值,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++; //通过指针对数组相应元素赋值

字符串赋值,可使用string.h头文件中的字符串操作函数进行赋值,如:

char a[10];strcpy( a, "abcdefgh");sprintf(a, "%s", "abcdefgh");

c语言 字符串数组 赋值,C语言字符串数组赋值方式-第2张图片-安济编程网
(图片来源网络,侵删)

注意:数组在定义时,可以同时进行初始化,但定义完成后,就不能按初始化的形式对其赋值了,如:

char a[10]="abcdefgh"; //这样可以a="abcdefgh"; //这样是错误的!a是数组名,是一个静态数据:数组首地址值,可以看作是个常数,不能再被改变。

怎样将CString变量赋值给字符数组?

CString可以通过GetBuffer()函数获得其内部的字符数组地址。

c语言 字符串数组 赋值,C语言字符串数组赋值方式-第3张图片-安济编程网
(图片来源网络,侵删)

示例如下:

CString s = TEXT("abcd"); //创建一个CString字符串TCHAR array[100]; //创建一个数组LPTSTR pBuffer = s.GetBuffer(); //获取字符串内部的字符数组的地址memcpy(array, pBuffer, s.GetLength() * sizeof(TCHAR)); //向数组复制数据

如何字符型数组赋值(C语言)?

初始化和赋值是两个完全不同的操作,初始化的含义是创建变量时赋予其一个初始值,赋值的含义是把对象的当前值擦除,以一个新值来替代。

“I love U"是一个字符串字面值,在赋值语句中它会自动转换为char * 类型,而c是char [10]类型,两者类型不同,并且编译器支持用指针给数组赋值。

数组和指针绝不是等价的,在问题中c的类型是char [10]而不是char *。虽然很多时候数组名会自动退化为指针:

但是在下述情况下数组名不会发生退化:

sizeof(c)

&c

字符串字面值赋值或初始化的时候

怎么把一个字符串赋值给字符数组?

chars[20];s="helo";这样错误的原因就是:不能用赋值语句将一个字符串常量直接给一个字符数组赋值。

chars[20];charss[]="hello";s=ss;错误原因是:不能用赋值语句将一个字符数组直接给一个字符数组赋值,即字符串的***(c语言中,但是在c++的string类,上面的赋值是正确的)必须用strcpy()函数实现

而chara[]=”toyou“;正确的原因是:因为在声明数组变量的时候就是,为其开辟空间,并为其初始化,这样才是符合c语言语法的。扩展资料:C语言中字符串赋值的理解一、指针式赋值上面的示例是显然可以正常执行的,也是很容易理解的。但是下面这种方式就令人有点难以理解了。

过程序的运行情况,我们可以知道:char*p="hello";这种字符串的赋值方式是完全没有问题的。

要理解这种赋值方式,我们首先得理解双引号(特别注意:这个是双引号,不要赋值的时候给弄了个单引号)在这个语句中做了什么工作

双引号主要做了3个工作,分别是:

(1)申请了空间(在常量区),存放了字符串。

(2)在字符串尾加上了“\0”。

(3)返回地址。

这里所返回的地址就赋值给了char*类型的指针变量p。二、通过字符数组直接把字符串赋值。程序如下:

到此,以上就是小编对于c语言 字符串数组 赋值的问题就介绍到这了,希望介绍关于c语言 字符串数组 赋值的4点解答对大家有用。

标签: 赋值 数组 字符串