1、今天发现指针数组一个有趣的现象,众所周知,数组是基于指针而生成的,故指针和数组是可以进行相互转换,如下所示:
int num[20]; num[1] = *(num+1);
但指针和数组还是存在不同点,其中之一便是指针名称是变量而数组名称是常量:
int num[20]; int* num1 = num; num += 1 ; // 无效,因为数组名称是常量,不允许修改。 num1 += 1 ; //有效,且指针指向num[1]
2、指针数组和数组的名称均代表第一个元素的首地址,并且带引号的字符串其也代表首地址
char ch[20] = "Lebron James"; // ch 代表 L字符的地址 char* ch1 = "Kyrie Irvring"; // ch1 代表K字符的地址 ,因为引号代表首地址,故可以将指针赋值。
3、使用cout 输出int 类数组名称得到的是首个int元素的地址,但使用cout输出char类数组名称得到的是整个char数组的元素直到遇到'\0'为止。
int num[20] = {1,2,3,....}; char ch[20] = "tiger." ; cout << " num = " << num << endl ; // 输出地址 如 0x ..... cout << " ch = " << ch << endl ; // 输出字符串tiger.