static int a[2][3]={{1,2,3},{4,5,6}}; int m,*ptr; ptr=&a[0][0]; m=(*ptr)*(*(ptr+2))*(*(ptr+4)); 这道理中的(*ptr)的结果是1,(*(ptr+2))表示的是二维数组中第2和对应的一维数组的首地址,也就是4对不对?那么(*(ptr+4))的值又是什么
呢?
因为你定义了int *ptr,所以ptr的值在增加的时候是按照int的类型增加的,而内存里存放元素的顺序(地址由低到高)是1,2,3,4,5,6,所以m=(1)*(3)*(5)=15。
c是中间级语言,有低级语言的特点(和硬件联系密切),又有高级语言的优点(灵活,好用)。对类型的严格要求体现了低级语言的特点,因为类型是读取内存的依据,列出的问题是最好的例子。
这只是我自己的观点,欢迎大家讨论。
看优先级就行拉,()号的优先级比*的大.
ptr指首地,后面的一路推就行拉