1、字符串和字符数组的区别,字符数组和普通数组一样,里面的每个元素是一个个的字符,字符串是存在字符数组中的,字符串的结尾处补上了“\0”截止符。
定义过字符串后,得到的是字符数组的首元素的指针,在结尾处加入截止符,可以方便的访问字符串中的任何一个元素。
C类型的字符串是存在字符数组中的,在字符串的结尾处补上"\0",这个结尾符是用来标志字符串结尾的,它的作用是
const * p; //p是一个常量指针
2、数组名和指针的区别
int a [20];
int *p =a;
(1)数组名的内涵在于其指代实体是一种数据结构,这种数据结构就是数组;所以sizeof(a) = 80;
(2)数组名的外延在于其可以转换为指向其指代实体的指针,而且是一个指针常量;
(3)指向数组的指针则是另外一种变量类型(在WIN32平台下,长度为4),仅仅意味着数组的存放地址。
3、数组和链表的优缺点,什么时候使用数组,什么时候使用链表?
(1)数组在内存中是连续存储的,通过数组下标可以快速访问任何一个元素,其时间复杂度是O(1);链表在内存中不是线性存储的,访问其中任何一个元素都需要从头开始遍历,时间复杂度O(n);
(2)数组需要事先确定大小,会造成内存浪费,链表则较简单,管理方便;
(3)数组中进行插入和删除操作复杂,需要移动大量的元素;链表中进行插入和删除则很简单,只需要改变指针的指向即可。
(4)数组操作简单,链表复杂,但是功能强大,自由度高。
#include <iostream> #include <CSTRING> using namespace std; int Lengh(const char *str); int main() { //定义一个字符串 char *str = "the price is five pounds"; char *p = str; while(*p++) { cout << *p; } cout << "\nthe length of str is: " << Lengh(str); return 0; } //统计字符串的长度 int Lengh(const char *str) { const char *p= str; int n=0; while(*p++) { n++; } return n; }