堆和字符串

2020-03-05  本文已影响0人  Jianbaozi

堆上

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
 int main(){    
    char* s1=malloc(5*sizeof(char));
    memcpy(s1,"abcd",5);
    char* s2=s1+3;
    memcpy(s2,"efgh",5);
    printf("%s@%p\n%s@%p\n",s1,s1,s2,s2);
    free(s1);
    free(s2);
    return 0;     
    }
char.png

结果:

D:\Codes\test>a
abcefgh@00000000001B13D0
efgh@00000000001B13D3

栈上

#include <stdio.h>
 int main(){    
    char* s1="abcd";
    char* s2=s1+3;
    s2="efgh";//s2覆盖了s1+3的值
    printf("%s@%p\n%s@%p\n",s1,s1,s2,s2);
    return 0;     
}

结果:

D:\Codes\test>a
abcd@0000000000404030
efgh@0000000000404035
上一篇下一篇

猜你喜欢

热点阅读