C++学习总汇:字符串和数组

上一篇 / 下一篇  2012-02-18 16:58:07 / 个人分类:C++程序设计

一、用new来动态分配内存时,一定是指针。如:
int *data = new int【12】
而起new定义的变量一定要delete。清除这部分内存
delete []data;
 
二、二维数组和指针:
int a[m][n]跟下面定义是等价的:
int *(a[m]+n)
int (*(a+m)))[n]
int *(*(a+m)+n)
以上:a是指向一维数组的指针,而不是单纯的指向int类型的指针
 
三、字符数组、字符串和’\0‘
字符数组时元素为字符变量的数组,而字符串则是以‘\0’为结束字符的字符数组。如果用一个字符串字面常量来初始化一个字符数组,数组的长度至少要比字符串字面常量的长度大1,因为还要保存结束符‘\0’。例如:
char array[] = “data”;
数组的array的元素为{‘d’,‘a’,‘t’,‘a’,‘\0’}
定义一个字符数组,数组元素中没有‘\0’,把这个数组输出时,编译器会在内存中寻找,直到找到‘\0’然后结束。这样输出来的值就不是我们定义的字符数组了
如:
char str[] = {'H','e','l'};
cout<<"str:"<<str<<endl;
输出的结果为:str:Hel烫烫?
 
char ch = 'H';
char *sl = &ch;
cout<<sl<<endl;
cout<<*sl<<endl;
输出结果为:
H烫烫
H
解释:char*默认是表示字符串的,定义的sl是一个指向ch地址的字符串,sl在输出时一直在内存中寻找‘\0’,找到后才退出。
sl:输出sl的字符串值
*sl:输出sl的第一个字符
 
四、字符串的系统函数:
strcpy(char*,char*)----拷贝
strcat(char*,char*)----连接
strcmp(char*,char*)----比较
toupper(int)----把字符转换为大写,这里变量为int,其实用char一样可以。char和int其实是通用的
isxdigit(int)----判断是否是十六进制字符
等等,其他可以baidu

TAG:

 

评分:0

我来说两句

日历

« 2024-04-13  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 15872
  • 日志数: 18
  • 建立时间: 2012-01-30
  • 更新时间: 2012-06-07

RSS订阅

Open Toolbar