Fork me on Gitee

数组指针一道题目分享

#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】:数组元素首地址

posted @ 2020-09-22 22:54  ---dgw博客  阅读(127)  评论(0编辑  收藏  举报