整形 为什么不用整形变量来存储而发明指针变量呢?
为什么不用整形变量来存储而发明指针变量呢?
事实上,从实现的角度来看,指针是一个整数变量,它只存储一个地址值。
所谓的指针概念和指针类型(不同类型的指针可能有相同的值,但它们不相等,1次操作获得的新地址也不同)是由编译器强加的。编译之后,指针实际上是地址的整数值,没有任何额外的类型信息。
因此,发明指针的概念是为了让程序员更好地理解它,并约束编译器使程序更无错误。
指向整型数组的指针如何用?
int(*P)[10
()的定义具有高优先级。首先,它指出P是指向整数类型的一维数组的指针。这个一维数组的长度是10,也可以说是P的步长,也就是说,在执行p1时,P应该跨越10个整数数据的长度。
因此数组指针也称为指向一维数组的指针或行指针。
所以我们必须分别赋值。
这样,两者之间的区别就很明显了。数组指针只是一个指针变量,在C语言中似乎是用来指向二维数组的。它占用内存中指针的存储空间。指针数组是一组指针变量,它们以数组的形式存储在内存中,占用多个指针的存储空间。
短整形,整形,长整形,长指针,各占几位呢?
在不同的操作系统和编译环境中,指针类型占用的字节数是不同的。一般来说,在编译和生成16位代码时,指针占用2个字节。编译和生成32位代码时,指针占用4个字节。编译和生成64位代码时,指针占用8个字节。我们通常生成32位程序,所以指针占用4字节,整形量也占用4字节。因此指针占用的空间与整数相同。
(C语言)地址为什么要变成指针才能赋值给指针变量呢?
指针是地址。所以你的问题不对。
我的理解是,我想问为什么变量需要取地址,然后给指针变量赋值,即int a,*P P=&a
让我们来谈谈一个小概念,数字23,在句子“我今年23岁”中,23的意思是年龄;在句子“我的偶像穿着23号篮球服”,23是篮球服的号码。也就是说,数字23在不同的句子环境中具有不同的语义。
在本文中,我们定义了两个成形变量。在内存中,它们都存储二进制代码,但语义不同。一个用于存储整数,另一个用于存储指向成形变量的指针。总之,这两个变量是不一样的。一个是存储常用值的公共变量,另一个是存储另一个变量的物理地址的特殊变量(因此我们需要添加*符号来区分它)。
你能理解吗?如果你不明白,你可以请我再回答这个问题。
c语言的指针中*操作符的本质是什么?
总结一下:
1。*首先,一个算术运算符
2。定义指针。例如,下面的定义语句:
int a
定义一个变量a,其数据类型为int
看下面的定义语句:
int*b
定义一个int*变量,如何理解int*可以如下:
*b是int type,它对应一个存储单元,它可以存储int类型的数据,这个单元的地址存储在B中,此时,B是int*数据。因此,您可以执行以下操作
a=*b
但是反向操作是错误的
b=a
您需要使用int类型的变量来给出int*[b=&a
在这种情况下,带有指针类型的形式参数的函数调用方法会很清楚。
理解时要注意两点*
1。当它出现在变量定义语句中时,与数据类型结合起来表示相应数据类型的指针
要定义一个函数fun,该函数带一个整型参数并返回整型指针,其定义语句为什么?
您定义的函数类型由您决定。
也就是说,您的函数是什么类型的,返回值是什么类型的。
例如:
函数定义int fun(int a,char b)
返回值为整数
函数定义int*fun(int a)
返回值为基类型为整数的指针
函数定义void fun(int a)
无返回值
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。