Old*_*ool 5 c pointers multidimensional-array
我有以下代码片段来理解指针到特定长度的字符数组的工作,使用以下示例代码.
#include <stdio.h>
int main(){
char sports[5][15] = {
"cricket",
"football",
"hockey",
"basketball"
};
char (*sptr)[15] = sports;
if ( sptr+1 == sptr[1]){
printf("oh no! what is this");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如何sptr+1和sptr[1]可以相等?因为第一个意味着增加地址,它sptr由一个存储,第二个意味着获取存储在其中的地址的值sptr + 1.
sptr是一个指向15 chars 数组的指针.初始化后sports,sptr指向sports数组的第一个元素"cricket".
sptr + 1是指向第二元件sports,其是"football"与sptr[1]相当于*(sptr + 1)其是指针的第一个元素"football",即
sptr + 1 ==> &sports[1]
sptr[1] ==> &sports[1][0]
Run Code Online (Sandbox Code Playgroud)
由于指向数组的指针和指向其第一个元素的指针的值都相等,因此sptr+1 == sptr[1]给出true值.
需要注意的是,虽然sptr+1和sptr[1]他们的类型是不同的同一地址的值.sptr+1是类型char (*)[15]和 sptr[1]类型char *.
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |