可以通过输入对指针进行赋值吗?

具体问题如下:

int main()
{
      char *p;
      scanf("%s",p);
}

可以像这样直接给指针p通过输入赋值吗?

可以通过指针赋值,但是你这么写是错误的,参考如下:
方法一:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    char* buf = (char*)malloc(100); //使用malloc申请内存
    scanf("%s",buf);
    printf("%s",buf);
    free(buf);
    return 0;
}

方法二:

#include <stdio.h>

int main()
{
    char buf[100]; //数组
    scanf("%s",buf);//数组名本身就是指针
    printf("%s",buf);
    return 0;
}

可以,但是毫无意义
你知道程序运行起来,内存首地址是怎么分配的吗
如果你知道,就可以像玩GBA金手指一样直接修改指针的地址
否则乱赋值一气没有任何意义

不可以,既是指针,能给它赋值也就是地址值,赋给它字符串,它装不下,修改如下,供参考:

#include <stdio.h>
#include <malloc.h>
int main()
{
    char* p=(char *)malloc(32);
    char* q = p;
    scanf("%s", p);
    puts(p);
    puts(q);
    return 0;
}