#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
char arr[] = "abcde";
cout<<&arr<<endl;
char *brr = "abcde";
cout<<&brr<<endl;
cout<<&("abcde")<<endl;
cout<<sizeof(arr)<<endl;//6
cout<<sizeof(brr)<<endl;//4
//char **parr = &arr; error
char **pbrr = &brr; // ok
printf("%c\n",*(*pbrr));
return 0;
}
总结:
1、基本概念:
数组:
一个数组名就代表一个数组对象,这个对象内可以有一个或多个元素,每个元素类型都相同;
指针:而指针里一般存的都是地址值。
2、赋值与访问:
数组:对于数组来说,它的内存地址在编译的时候就已经确定了,可以直接给它赋值,当然也可以直接对它进行访问。
指针:对于指针来说,先得得到之指针里存放的地址值,然后向这个地址赋值;
3、所占内存:
数组:和它所存数据的元素个数和类型有关系
指针:和操作系统的位数有关
4、联系:
对数组进行取地址操作时候,返回的类型是一个指向数组首地址的指针;
数组作为右值的时候,就相当于指针,返回的是第一个元素的值;
对数组进行取下标操作时,也类似于指针;