前面我们大致了解了下C语言中的字符串其实就是字符组成的数组,那么,要弄明白字符串,看来是不得不搞清楚数组了,还是看例子先:
以上代码输出结果:
观察p1和p1+1的,发现,p1+1比p1大4,也就是p1+1,指针p1移动了4个字节。
观察p2和p2+1的,发现,p2+1比p2大4,也就是p1+1,指针p1移动了1个字节。
观察&a和&a+1的,发现,&a+1比&a大4,也就是&a+1,指针&a移动了40个字节。
观察p3和p3+1的,发现,p3+1比p3大4,也就是p3+1,指针p3移动了4个字节。
结论: 1、数组名等效于数组的首元素取地址,即,对于数组a[10],在写代码时,a与&a[0]是等效的。 2、&a步长为40,代表指针偏移了整个数组那么长,因为整个数组所占的字节数为40; 3、p2与&a分别+1结果的不同,说明了,指针运算中的步长偏移量与指针所指向的内存空间的类型有关。第8行,由于强制规定了指针为void * 型,所以步长变成了1. 4、指针是一种数据类型,在不进行强制转换的情况下,指针的数据类型与他所指向的内存空间的数据类型一致。