为什么程序正确但是没有输出

img

按理说这个指针已经指向了地址,我这样改变指针指向地址的值为什么输出后没有结果

img

程序错误,所以结果错误
*p="jkdfg" ; *p指向 常量字符串,是不能改变的,改为: p[10];

这里有一些基础得知识点你可以百度加自己练习梳理一下:
1:c语言中字符串得表示以\0终止,如何确定字符串得长度?
2: 字符串得初始化可以用字符数组或者char * 有关char *字符串得初始化,你百度梳理一下
3:这里特别要注意char *对字符串得初始化,如果直接初始化,默认是const,要不就要用malloc
4:const关键字得作用,修饰为const,就不允许修改该变量。
5:数组越界这里也要特别细心关注


int main()
{
    char a[10] = "woaizhong";//这里其实数组中存的应该是woaizhong\0   \0是字符串终结标志
    //char* b = "dajiahaoa"; //这里虽然有的编译器能编过,但实际上是默认为const char*的,其中的字符是不允许被修改的
    //vs2019这种就编译不通过  必须指定为 
    //const char* b = "dajiahaoa"; //但是 这种定义对b[i]后面赋值也是不允许的,了解一下const关键字
    char b[11] = "dajiahaoa";
    //这里还需要注意 b的长度一定要大于等于a的

    //a[i] 表示的是一个字符 这里你的判断应该是
    int i = 0;
    int lena = strlen(a); //求得是字符串得长度  不包含\0
    for (i = 0; i < strlen(a) && i< strlen(b); i++)
    {
        b[i] = a[i];
    }
    b[i] = '\0'; //注意这里不要越界,是i(循环终止已经+1)
    printf("%s \n", b);
}

把a 的首地址给到b就好,也就是 b = a;不需要结束符和for循环,供你参考!!