1.指针和引用最主要的区别应该在于引用是一个变量的别名,不分配内存区域。而指针有内存空间,存储指向对象的地址。要理解这一点可以从编译过程来看:编译成目标文件过程中,把指针和引用添加到符号表中,其中记录变量和变量所对应的地址。指针变量在符号表上对应的地址为指针变量的地址,而引用在符号表上对应的地址为引用对象的地址。符号表生成后就不会再改变,所以指针可以改变指向的对象,而引用一旦和某个对象绑定后就不再改变。
2.指针和数组的区别:(1)sizeof可以计算出数组的容量,而sizeof计算一个指针得到的是一个指针变量的字节数,而不是其所指内存的容量。当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。(2)修改内容上的差异:
char a[] = "hello word"; a[0] = 'x'; char* p = "hello word"; p[0] = 'x'; ///运行时出错。因为p指向的是常量区,不能修改。
还有一个区别:C语言结构体里的成员数组和指针