数组指针一道题目分享

#include<stdio.h> 
#include<string.h>
int main(){
    char a[8]="abcdef",b[8],p=a+3;
    while(--p>=a){
        strcpy(b,a);
    }
    printf("%d",strlen(b));
    return 0;
}


结果为 6

因为: p=a+3  a为数组的首地址不是 数组元素的首地址,所以+3 实际上跨越了 多个地址空间解释为:sizeof(a)+3

= a[6]+3

知识点:

a: 数组首地址

&a : 数组元素首地址

&a【0】:数组元素首地址

原文地址:https://www.cnblogs.com/dgwblog/p/13715402.html