c 指针初始化 指针初始化 4.7.1声明和初始化指针_指针初始化

c 指针初始化 指针初始化 4.7.1声明和初始化指针_指针初始化
4.7.1 声明和初始化指针
我们来看看如何声明指针。计算机需要跟踪指针指向的值的类型。例如,char的地址与double的地址看上去没什么两样,但char和double使用的字节数是不同的,它们存储值时使用的内部格式也不同。因此,指针声明必须指定指针指向的数据的类型。
例如,前一个示例包含这样的声明:
[TR]
[TD][I]498)this.width=498;' onmousewheel = 'javascript:return big(this)' height=31 alt="" src="http://pic.aIhUaU.com/201602/15/201846158.jpg" width=351 border=0>[/TD][/TR]
[TR][/TR]这表明,* p_updates的类型为int。由于*运算符被用于指针,因此p_updates变量本身必须是指针。我们说p_updates指向int类型,我们还说p_updates的类型是指向int的指针,或int*。可以这样说,p_updates是指针(地址),而*p_updates是int,而不是指针(见图4.9)。
[TR]
[TD][I]498)this.width=498;' onmousewheel = 'javascript:return big(this)' height=453 alt="" src="http://pic.aIhUaU.com/201602/15/201859501.jpg" width=597 border=0>[/TD][/TR]
[TR]
[TD](点击查看大图)图4.9 指针存储地址[/TD][/TR]顺便说一句,*运算符两边的空格是可选的。传统上,C程序员使用这种格式:
[TR]
[TD][I]498)this.width=498;' onmousewheel = 'javascript:return big(this)' height=29 alt="" src="http://pic.aIhUaU.com/201602/15/201931891.jpg" width=265 border=0>[/TD][/TR]这强调*ptr是一个int类型的值。而很多C++程序员使用这种格式:
[TR]
[TD][I]498)this.width=498;' onmousewheel = 'javascript:return big(this)' height=25 alt="" src="http://pic.aIhUaU.com/201602/15/201944266.jpg" width=317 border=0>[/TD][/TR]这强调的是:int*是一种类型-指向int的指针。在哪里添加空格对于编译器来说没有任何区别,您甚至可以这样做:
[TR]
[TD][I]498)this.width=498;' onmousewheel = 'javascript:return big(this)' height=29 alt="" src="http://pic.aIhUaU.com/201602/15/201953799.jpg" width=328 border=0>[/TD][/TR]但要知道的是,下面的声明创建一个指针(p1)和一个int变量(p2):
[TR]
[TD][I]498)this.width=498;' onmousewheel = 'javascript:return big(this)' height=25 alt="" src="http://pic.aIhUaU.com/201602/15/202011873.jpg" width=261 border=0>[/TD][/TR]
对每个指针变量名,都需要使用一个*。
注意:在C++中,int *是一种复合类型,是指向int的指针。
可以用同样的句法来声明指向其他类型的指针:
[TR]
[TD][I]498)this.width=498;' onmousewheel = 'javascript:return big(this)' height=53 alt="" src="http://pic.aIhUaU.com/201602/15/202035308.jpg" width=554 border=0>[/TD][/TR]
由于已将tax_ptr声明为一个指向double的指针,因此编译器知道*tax_ptr是一个double类型的值。也就是说,它知道*tax_ptr是一个以浮点格式存储的值,这个值(在大多数系统上)占据8个字节。指针变量不仅仅是指针,而且是指向特定类型的指针。tax_ptr的类型是指向double的指针(或double *类型),str是指向char的指针类型(或char *)。尽管它们都是指针,却是不同类型的指针。和数组一样,指针都是基于其他类型的。
虽然tax_ptr和str指向两种长度不同的数据类型,但这两个变量本身的长度通常是相同的。也就是说,char的地址与double的地址的长度相同,这就好比1016可能是超市的街道地址,而1024可以是小村庄的街道地址一样。地址的长度或值既不能指示关于变量的长度或类型的任何信息,也不能指示该地址上有什么建筑物。一般来说,地址需要2个还是4个字节,取决于计算机系统(有些系统可能需要更大的地址,系统可以针对不同的类型使用不同长度的地址)。
可以在声明语句中初始化指针。在这种情况下,被初始化的是指针,而不是它指向的值。也就是说,下面的语句将pt(而不是*pt)的值设置为&higgens:
[TR]
[TD][I]498)this.width=498;' onmousewheel = 'javascript:return big(this)' height=50 alt="" src="http://pic.aIhUaU.com/201602/15/202107279.jpg" width=475 border=0>[/TD][/TR]
程序清单4.16演示了如何将指针初始化为一个地址。
程序清单4.16 init_ptr.cpp
[TR]
[TD][I]498)this.width=498;' onmousewheel = 'javascript:return big(this)' height=293 alt="" src="http://pic.aIhUaU.com/201602/15/202131867.jpg" width=565 border=0>[/TD][/TR]下面是该程序的示例输出:
[TR]
[TD][I]498)this.width=498;' onmousewheel = 'javascript:return big(this)' height=50 alt="" src="http://pic.aIhUaU.com/201602/15/202141534.jpg" width=612 border=0>[/TD][/TR]
从中可知,程序将pi(而不是*pi)初始化为higgens的地址。在您的系统上,显示的地址可能不同,显示格式也可能不同。

  

爱华网本文地址 » http://www.aihuau.com/a/395251/74378262895.html

更多阅读

cf初始化失败解决方法 ie8安装失败解决方法

cf初始化失败解决方法——简介很多同学打cf的时候运行会出现初始化失败导致游戏打不开,很多人都会把游戏删了重下,这样有时是可以解决。但如果是别的原因的话重下游戏也是行不通的,有3个原因会导致游戏初始化失败。下面我一个一个讲。

8255A初始化编程、端口地址的计算 8255a编写初始化程序

  8255A的A,B,C三个端口的工作方式是在初始化编程时,通过向8255A的控制端口写入控制字来设定的。  8255A由编程写入的控制字有两个:方式控制字和置位/复位控制字。方式控制字用于设置端口A, B,C的工作方式和数据传送方向;置位/复位

声明:《c 指针初始化 指针初始化 4.7.1声明和初始化指针_指针初始化》为网友谈情说梦分享!如侵犯到您的合法权益请联系我们删除