首先,我刚开始C语言时,也和你有过同样的问题,要寻址的地址是用一个数值表示的,但是为什么要变成指针才能对指针变量赋值呢?

下面让我来分析一下我当时是怎么理解的这个难点,主要从以下三个方面进行分析:C语言是强类型语言、什么是指针、寻址的地址怎么表示?

第一点:我们要知道是C语言是强类型语言。因为C语言是强类型语言,也就导致我们要对两种不同数据类型的进行运算时,C语言对运算结果进行类型转换,将小类型的数据转换成大类型的数据,然后再进行运算。在C语言中类型转换有隐式转换和显示(强制)类型转换。

例如:

int a;

float s;

a =(int)s;

丄例就是强制类型转换的一种表现形式,对于强制类型转换这种转换形式来说,在转换时会对最终的数值大小产生影响。

例如:

float a=100;

上式就表示了一种一种隐式的数据类型转换,浮点类型的变量a被赋值了一个整形数据。

第二点:指针在C语言中是一个很抽象的概念,指针也是一种数据类型,指针因为具有高度灵活性,能够直接操作内存,所以说对指针的熟练运用,能看出一个程序员水平的高低。

我们在使用一个指针时,始终要秉持的一个观点就是:指针就是一个内存区域地址,而指针类型则表示了这个内存区域的大小,而存储指针的变量就是指针变量。

第三点:在C语言中,我们需要对内存地址进行寻址,在对地址进行表示时,为了方便常用十六进制数对地址表示,而在C语言中十六进制的数值,其实就是一个整型数据,而指针也是一种数据类型,在进行赋值时,就需要对其进行转换。

所以说对不同类型的变量或者数值在运算时需要进行转换。