为什么指针在函数外面赋值会失败?

同一段代码,为什么放在函数里面可以,放在外面不行,有仔细说说原因的吗?

突然懵了,直接int类型在外面声明然后赋值又是可以的。指针咋就不行了?

#include                                   

/*
 *        //  同一段代码,为什么放在函数里面可以,放在外面不行?
 *        int* x;
 *         int y = 23;
 *        x = &y;
 */

int main()
{
    int* x;
    int y = 23;
    x = &y;

    system("pause");
    return 0;
}

函数体外只能定义和声明,不能做赋值等运算

因为c语言的最小单位就是函数
程序启动先运行主函数(入口函数),主函数再调用其他函数
你把代码写到函数外面,根本就是个错误的语法,编译都过不去
在函数外面,变量定义是可以的,这是在定义全局变量,但是x=&y这是个纯粹的赋值语句,就是个语法错误。

函数外不能进行 2 个变量单独的赋值运算符

下面这个,只能在函数体中进行赋值运算

    x = &y;

你如果这样,是可以的

int y=23;
int* x = &y;