今天我们来学习一些关于指针各种写法和代表含义
首先这是一个char类型的数组
strlen是一个得出数组大小的函数
第一种写法
arr代表首元素地址,那么strlen(arr)则为取这个给数组的大小,那么则为6
第二种写法
arr+0还是为首元素地址那么结果还是为6
第三种写法
首先我们要知道strlen函数的写法它接触的为首元素地址,这是*arr不是地址而是第一个元素a,那么strlen接受的就是元素a,就要把a当成地址使用a的ascii值为97,那么把97当作地址访问,那么就是非法访问.大家可以试一试
第四种写法
相当于把b传入,同上。
第五种写法
给的是取地址arr即&arr,依然为首元素的地址其实与第一种写法相同
第六种写法
&arr---则为char(*p)[7]=&arr
而strlen的参数为const char*str
两个指针类型不兼容,但是能强制传入
&arr+1是从/0之后的1个数之前的大小那么那个数因为不知道则此处得到的为一个未知数
第七种写法
&arr[0]+1之后的数组长度那么因该为5
第一种写法
sizeof(arr)是去数组中所有元素的个数包括/0,所以答案为7,arr单独放在sizeof中代表的是数组
第二种写法
此时arr没有单独放在siizeof中那么arr代表的就是首元素地址则arr+0还是首元素地址那么sizeof此时就为首元素地址的大小那么则为4或8
第三种写法
*arr代表的是首元素,那么这里就是首元素的的大小,则为1
第四种写法
与第三种大同小异,答案也为1
第五种写法
&arr为首元素的地址,那么也是4/8
第六种
同第五种4/8