三九宝宝网宝宝百科宝宝知识

关于字符串和字符串数组

04月08日 编辑 39baobao.com

[WinAPI字符及字符串函数1:CharLower字符或字符串转小写]unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TBu...+阅读

str是指针,str="123456"则表示将str赋给一个字符串常量的地址,既然是常量,就不允许更改,所以str[2]='a';是错的

char str1[]="Hello",*str2="Hi";

str1="Goodbye"; /*错误*/

str2="Bye"; /*正确*/

str1是一个指针常量(比如说就是0xEE000000,地址不可二次改变),而str2是一个指针变量,地址可以再次改变,所以:

str1="Goodbye"; // 实际上就是这样:0xEE000000="Goodbye"; 显然错啊

str2="Bye"; // 比如原来str2值为0xEE000000,"Bye"的值为0xFF000000,通过这个赋值语句,变量str2的值变成了0xFF000000

通过一道题问字符串和字符数组的关系

楼主大侠认真看啊,满意请给分,谢,字符串在C中就是个二维数组。 char str1[] = ...{'a','b','c','d'}; char *str2[] = ...{"a","b","c","d"}; str1叫字符数组,首先它是一个数组,5个元素但长度为4 (加上个\0)其实就相当于“abcd”。看看怎么变过来的:首先变为char str1[ ] = ("abcd");然后把括号去掉就是 char str1[ ] = "abcd",和C++里面初始string对象一样 在C++里面你可以这么用 string s(str1)或string s = str1 就相当于string s("abcd")对s进行初始化,反正就是一句话,可以把一个字符串数组看成一个字符串常量。另一种高级的玩法的是 string s(str1,hello + strlen(str1)) 要知道在C++里面数组的指针也就是str可以看成指向其本身的的迭代器。 str2 有点麻烦,两兄弟最不像的地方就是引号,一个单一个双。

这就是关键了!!单表示字符,双表示字符串,字符串是什么,刚才已经说过了,它是数组。这下就哦了,不就是数组的数组么,说白了就是个2维数组,在白点就是一个指针的指针,所以可以用char** p指向它,

c中。字符串和数组有什么区别呢

对于字符串,系统会在字符串的末尾自动添加一个'\0'作为结束标志,因此在程序中往往依靠检测'\0'的位置来判定字符串是否结束;

对于字符数组,举个例子,char c[5]={'a','b','c'};则系统会对数组的最后的两个元素自动填补空字符'\0'。

另外,如果给cout提供一个字符的地址,则它将从该字符开始打印,直到到'\0'为止,比如:char a[5]={'a','b','c'}; cout<

而你如果给出的是一个整形数组的地址,输出的则是该数组的地址,如:int a[5]={1,2,3};cout<

最后,string是一个类来的,是C++为处理字符串提供的一个类,比用字符数组来处理要安全和方便

CC语言字符数组和字符串数组的疑惑

看了一下你的问题,我觉得先有必要说一下在C语言中如何去看待字符串,字符串在C语言中其实就是一系列字符组成的,只不过记住在最后面会加上一个'\0'字符,用来标示字符串的结束。 字符串的首个字符的位置其实就是字符串的首地址,对于一般的处理函数来说,对字符串的处理都是从首字符开始,依次遍历字符序列,只要找到了'\0'字符为止。下面就详细就你给出的进行分析: char str[30] = "Mynameis";定义了一个字符串,地址很明显我们可以通过str获得,puts这个函数需要一个字符串的首地址,str[0]表示的是取得字符串中第0个位置的字符,注意,这里是字符,而不是地址,所以我们需要通过'&'操作来生成一个地址,&str[0] 其实就是str.可想而知,puts遍历了这个字符串序列直到找到了'\0' 根据上面的解释很容易知道第二个为什么报错了 char str[30] = "Mynameis";puts(&str[1])这里首先str[1]表示取字符序列中的第一个字符,然后&str[1]表示取第一个字符在字符序列中的地址,也就是告诉了puts从第一个字符处开始向后面遍历这个字符串,这样很明显就跳过了第0个字符了。

导致输出结果中不含有第0个字符M char str[5] = {'a', 'b', 'c', 'd', 'e'};这是定义了一个字符数组,不是字符串,导致这个数组不会自动以'\0'结束,printf中的%c表明后面格式化的是一个字符,所以运行正常 而对于最后一个printf("%c", &str[1]),str[1]是字符数组中的第一个元素,&str[1]是第一个元素的地址,而%c期待的是一个字符,但是&str[1]却是一个地址,其实地址就是一个32位(X86机器)的整型数值,这样导致会将这个4B的数组中的最低一个Byte转换成为字符,然后输出。这就是为什么导致输出的可能是一个乱码了。

以下为关联文档:

WinAPI字符字符串函数3:CharUpper字符字符串转大写interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;Button...

WinAPI字符字符串函数10:lstrcpy复制字符串interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;Button...

WinAPI字符字符串函数9:lstrcat合并字符串interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button...

请教VB6字符串如何转化为16进制BYTE数组VB字符串可通过使用StrConv 函数,将字符串由 Unicode 转成系统的缺省码页后,再获取每个字节的十六进制字符后拼接起来。 StrConv 函数,返回按指定类型转换的 Variant (String)...

字符串怎么拆分成VBA数组答:数组的合并和字符串拆分(Join & Split):多个字符的合并和字符串按规律的拆分是经常遇到的,如: A-REW-E-RWC-2-RWC 按分隔符-拆分成6个字符放在一个数组中 有一组数array(23,45,...

数字字符串和数值型数据有什么区别一、数据类型不同: 字符串是由字符组成的,多个字符以0结尾组成一个字符串字符串需要给出首字符位置。 数值型字符串可以理解为 一个String型的du字符串中 装有int型的数值,这时...

急!java string类型的字符串数组排序!急!java string类型的字符串数组排序!定义3个数组分别是字符串字符型整型分别用于存储学生://jdk1.4 以下由小到大 如果长度一直 按照字符串排序 public static void main(St...

请教使用CString类或CStringArray类定义字符串数组请教使用CString类或CStringArray类定义字符串数组,如何排序 MFC的CStringArray:声明:BOOL WINAPI PrintImage(CString szImage[], BOOL bActual);实现:BOOL WINAPI PrintImage(C...

VB程序设置问题:如何提取指定字符串之前的字符串VB程序设置问题:如何提取指定字符串之前的字符串,VB取字符串。。急!1、使用Left$(string, length)函数(Left$也可以用Left替换,string字符串、length截取的长度)和InStr([start,]...

推荐阅读
图文推荐