输出结果:
s=0x7ffd8a263869 *s=a s=0x7ffd8a26386a *s=k s=0x7ffd8a26386b *s=m s=0x7ffd8a26386c *s= s=0x7ffd8a26386d *s=pc语言的数组是一段连续的内存地址,如果是char数组,每个元素占用一位内存,所以可以用str[]中的str直接指向第一个元素的地址。在定义数组的时候,以0或者null结束,也就是说,在遍历数组的时候,遇到null时,认为数组已经结束。利用字符串定义数组的时候,系统会自动增加一个字符null,也就是说str[]=“akm”,实际上是有’a’, ‘k’, ‘m’, null,共四个元素。当按照指针值直接给第5个位赋值之后,直接用str[4]可以访问,但是因为str[3]是null,所以遍历数组的时候,到str[3]就结束了。 在Xcode中,用str[4]访问,会报错,认为超出数组下标,也就是说,Xcode会在添加元素的时候检查是否越界。 如果指针定义的是char *p,那么每次p++实际上是p=p+1,因为每个char占用1位。 如果指针定义的是int *p,那么每次p++实际上是p=p+4,因为每个int占用4位。