一个奇怪的字符串问题

#include
#include
int main()
{
    char  input[] = "nihao";
    char  input1[1] = "nihao";
    /*char  *m = "nihao";
    char  input3[10] = "nihao";
    printf("input1=%s\n", input1);
    printf("%s\n%s\n%s\n%s\n",input,input1,m,input3);
    printf("%d",sizeof(m));*/
    printf("input1=%s\n", input1);
    return 0;
}

首先,input1 的长度是1   那么事实上应该只是读入n,但是事实上输出的是nnihao,如果将长度设置为2的话,就输出ninihao,这个问题是因为第一个字符串的存在,缓存中还是有nihao的,由于是栈的存放,先输出

#include
#include
int main()
{
    //char  input[] = "nihao";
    //char  input1[5] = "nihao";
    /*char  *m = "nihao";
    char  input3[10] = "nihao";
    printf("input1=%s\n", input1);
    printf("%s\n%s\n%s\n%s\n",input,input1,m,input3);
    printf("%d",sizeof(m));*/
    //printf("input1=%s\n", input1);
   // char  *m = "nihao";
    //char m[] = "nihao";
    int *m = 10;
    printf("%d",sizeof(m));
    return 0;
}

一个是栈的数据存储问题一个是变量类型的结合优先次序问题。

但是为什么是4呢?

你可能感兴趣的:(数据结构--字符串)