C语言接收scanf函数输入的字符串问题

img


为啥我直接定义字符指针不行,定义一个字符数组就行,数组本身不就是指针吗》,求解?

字符指针需要申请内存空间

#include<stdio.h>
#include<stdlib.h>

int main() {
    char *str;
    str = (char*)malloc(sizeof(char) * 20);// 申请20个char长度的内存空间
    scanf("%s", str);
    printf("str=%s", str);
    free(str);// 释放内存空间
    return 0;
}

你这里还需要给这个指针分配内存,另外数组名是一个常量地址,和指针还是有差别的