C++字符数组和指针

char *p="hello"和char a[]="hello world"

一、双引号做了3件事:  

1.申请了空间(在常量区),存放了字符串 
2. 在字符串尾加上了'/0'    
3.返回地址

二、sizeof(p)=4;sizeof(*p)=1;sizeof(a)根据a所在位置,如果是作为函数的形参sizeof(a)=4;sizeof(a)=12;

三、

*p的值是不能更改的了,但可以p=“efg”。P的值可以更改,但所指向的内容为常量不能更改。*p=”efg”是不被允许的。P=’A’是不符合规范的

 

四、

Char a[10]=”hello”是 允许的,但是char a[10]={};a=”hello”是不允许的,因为a虽然是地址,但是是个常量不能更改。a[0]=’A’可以l类似于*a=’A’

对于函数参数列表中的以数组类型书写的形式参数,编译器把其解释为普通的指针类型,如对于void func(char sa[100],int ia[20],char *p)。则sa的类型为char*,ia的类型为int*,p的类型为char*。所以sizeof(sa)=4

 

五、

快速排序和堆排序的代码思想

递归思想,找到low指针,分成0-low-1和low+1-high指针

堆排序:

    1. 建立大顶堆;对数组所有节点依次建立大顶堆for循环
    2. 建立循环,将建好的大顶堆的根节点与最后一个元素交换位置,再从新建堆。
posted on 2016-10-16 20:11  runningcode  阅读(168)  评论(0编辑  收藏  举报