1.数组名表示数组第一个元素的地址,下面的语句将p声明为指向wages数组第一个元素地址的指针
double *p = wages;
wages = &wages[0] = address of the first element of the array
2.指针变量加1时,其增加的值等于指向的类型占用的字节数,如double类型指针加1,地址值将增加8,即8个字节的内存;再如short型,加1后地址值增加2。
3.当一个指针指向数组时,如wages[1],c++编译器会将它看做 *(wages + 1),这表示,编译器优先计算(wages+1)这第二个元素的地址,再找到存储在这个地址上的值,最终结果边代表了wages[1]。因此我们可以发现,数组表示法中,在很多种情况下可以用相同的方式使用指针名和数组名。
如 arrayname[i] becomes *(arrayname + i)
pointername[i] becomes *(pointername + i)
但是其中存在着一种差别:指针的值可以被改变,但数组名是常量,因此出现了下列对比:
pointername = pointername + 1; //合法,指针加一,地址增加对应类型字节数。
arrayname = arrayname + 1; //不合法,数组名是常量,不能对常量值进行修改。
4.字符型指针输出为字符串,若想输出地址,需要使用强制转换类型,转换为int,即使用(int *)p输出字符串的地址。
5.字符串与数组。将字符串赋值给数组不能单纯使用复制操作符,需要使用strcpy()或strncpy()。
6.new用于结构的两步骤:创建结构和访问结构成员。
eg: ①inflatable *ps = new inflatable;
②访问成员:若inflatable结构中含有price成员,则ps->price表示被指向的price成员。其中"->"为箭头成员操作符,由连字符和大于号组成。
Tips:什么时候使用句点操作符呢?答:结构标识符为结构名的时候,inflatable.price。
什么时候使用箭头成员操作符呢?答:标识符为指向结构的指针时,ps->price。
另外,ps指向inflatable,则(*ps)表示结构本身,即(*ps)也是一个结构,可以使用(*ps).price来指向成员变量price。
7.delete[]和delete。delete[]用于释放new分配的对象数组指针所指向的内存,delete用于释放new分配的单个对象指针所指向的内存。