C语言指针赋值前的指向问题

以下代码运行会得到什么结果?

#include<stdio.h>
int main()
{   
    int *k;//定义一个指针变量
    *k=100;#给指针变量所指的内存赋值
    printf("%d",*k);
}
     答:以上代码运行未出现任何结果,为什么会出现这样结果呢?因为,int * k; 仅仅定义了一个指针变量并未给该指针一个明确的指向,但是*k=100;该语句将100赋值给k所指的内存,但计算机并不知道k指向那个内存,即计算机不知道将100储存在那个内存中,所以不会得到任何结果。我们可以运行语句print("%d",k);,将会输出0,即k为一个空指针,与k=NULL一样,都是一个空指针,即k不指向任何内存。但上面代码符合C语言的语法,因此编译正确。改正方法如下代码:
#include<stdio.h>
int main()
{   
    int *k;
    int a=10;
    k=&a;//将指针变量k指向变量a
    *k=100;
    printf("%d",*k);
}

猜你喜欢

转载自www.cnblogs.com/gzk08-20/p/9220486.html