指针初始化指针要初始化吗

指针初始化  时间:2021-06-23  阅读:()

不太理解指针问题。什么叫没有对指针进行初始化呀还有这几个选项为啥不对 求大神详解

4个选项中A、B错误明显,都是因为指针无初始化,指针不明所指。

这是最该避免的。

D项中的赋值有错误,&k即p,*p=&k,类型不同,*p是int型变量,&k是地址,不能互相赋值。

C项就是最佳选择,如果加一选项可以这样:E)int k,*p=&k;scanf("%d",p);

指针的初始化 指针的赋值 有什么区别?二者的联系是什么?使用上有什么要求么?

初始化是指第一次定义指针的时候就给它赋个值。

赋值不一定是第一次。

指针最好要初始化,否则会成为野指针,野指针很危险,因为它会指向一个不明确的内存,对这个指针的操作可能会导致系统故障。

指针要初始化吗

您在题目中的下面的文字是树上的吧? 指针的赋值,“=”的左操作数可以是*p,也可以是p。

当“=”的左操作数是*p时,改变的是p所指向的地址存放的数据; 当“=”的左操作数是p时,改变的是p所指向的地址。

数组的变量名b表示该数组的首地址,因此p=b;也是正确的。

先说一下关于指针的话题:既然可以使用:int m来代表变量,为什么要设计指针这种变量类型呢?指针一般用于对数组或者连片的内存的访问(这里连片的内存的每一个单元的数据类型是已知的)。

对于int m来说,我们只关心m,对m前后的地址的数据不感兴趣,但是对于数组或内存区,由于他们的每一个单元的数据类型是已知的,那么,访问数组中的各个元素,除了使用:b[0],b[1],b[2]...之外,还可以使用指针的移动:p=b[0];p+1=b[1],...来访问,这样就更加便利;试想,对于多维数组:c[2][3][4],要访问其中一个元素,或者访问其中一行、或者一列数据,使用下标表示的形如c[2][3][4]的表达方法就比较笨拙了,使用指针的移动,就不在需要知道具体的指针代表的变量的具体名称(是c[2][3][4]还是c[0][1][3]),这样就很灵活和方便。

既然指针有上述性质和优势,下面对上面的4句话分别解释一下: 1、“指针的赋值,“=”的左操作数可以是*p,也可以是p。

” 指针实际也是一个变量,这个变量实际上是这个指针代表的变量(实际变量,例如整形变量、char型变量)的地址。

这样,我们用指针表示地址,用*p表示这个地址指向的变量的具体数字。

但无论如何,指针p和*p(p代表的具体数字)均为变量,因此可以用于赋值的左操作数; 2、“当“=”的左操作数是*p时,改变的是p所指向的地址存放的数据;” 当左操作数是*p时,*p实际上代表的是某个具体数值,这与int m中的m代表某个具体数值是一样的,也就是说,*p=2与m=2是等价的,所以,此时,赋值的右操作数应该是具体的数据,而这个与m等价的*p中的p是一个地址,*p=2,改变的是地址中的数据,而未改变指针(地址),所以说:改变的是p所指向的地址存放的数据; 3、“当“=”的左操作数是p时,改变的是p所指向的地址。

” 上面的“2”理解了,这里就可以对照比较了。

当左操作数是p时,p是某个地址(至于该地址存储的具体数据,也就是*p是多少,我们不关心),所以,为了赋值语句的语法正确,右操作数也应该是一个地址,而不是具体的数据(int型、char型等等都不是地址);所以,语句:p=&m(&操作符是取地址运算符,无论m是什么类型,&m都给出m的地址)才是合法的; 4、“数组的变量名b表示该数组的首地址,因此p=b;也是正确的。

” 还是这句话:上面的“3”理解了,这里就可以对照比较了。

呵呵 数组变量在C语言中是比较特殊的,与int m中,m只代表m中的具体数据,只有&m表示变量m的地址所不同的是:int b[3]中的数组变量a代表的是数组的“首”地址,也就是b[0]的地址,虽然前面的定义表明b是int型的地址。

需要区别的是:b代表地址,b[0]才代表具体数据。

这样:p=b,赋值符左右两侧均为地址,就合法了。

最后,利用题目中给出的例子总结一下: int *p; int a; int b[1]; p = &a; p = b; p为int型指针;a是int型变量;b是int型数组,所以,b(本身)表示int地址 那么,p = a,地址 = 数据,不合法; p=&a,地址 = 地址,合法; p=b,地址 = 地址,合法; 但是:p = b[0],地址 = 数据,不合法;

百驰云(19/月),高性能服务器,香港三网CN2 2核2G 10M 国内、香港、美国、日本、VPS、物理机、站群全站7.5折,无理由退换,IP免费换!

百驰云成立于2017年,是一家新国人IDC商家,且正规持证IDC/ISP/CDN,商家主要提供数据中心基础服务、互联网业务解决方案,及专属服务器租用、云服务器、云虚拟主机、专属服务器托管、带宽租用等产品和服务。百驰云提供源自大陆、香港、韩国和美国等地骨干级机房优质资源,包括BGP国际多线网络,CN2点对点直连带宽以及国际顶尖品牌硬件。专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端...

Vinahost - 越南VPS主机商月6美元 季付以上赠送时长最多半年

Vinahost,这个主机商还是第一次介绍到,翻看商家的介绍信息,是一家成立于2008年的老牌越南主机商,业务涵盖网站设计、域名、SSL证书、电子邮箱、虚拟主机、越南VPS、云计算、越南服务器出租以及设备托管等,机房主要在越南胡志明市的Viettle和VNPT数据中心,其中VNPT数据中心对于国内是三网直连,速度优。类似很多海外主机商一样,希望拓展自己的业务,必须要降价优惠或者增加机房迎合需求用户...

如何低价香港服务器购买?有没有便宜的香港服务器推荐?

如何低价香港服务器购买?想要做一个个人博客,想用香港服务器,避免繁琐备案,性能不需要多高,只是记录一些日常而已,也没啥视频之类的东西,想问问各位大佬有没有低价的香港服务器推荐?香港距大陆近,相比美国服务器最大的优势在于延迟低,ping值低,但是带宽紧张,普遍都是1M,一般戏称其为“毛细血管”。同时价格普遍高,优质稳定的一般价格不菲。大厂云梯队阿里云、腾讯云两家都有香港服务器,要注意的是尽量不要选择...

指针初始化为你推荐
windowsmediawindows media player打开怎么设置存储区域网络网络存储怎么用?是接在路由器上面吗?素数算法有能写出所有素数的公式吗网络视频下载器网络视频下载工具哪个好用?比思论坛永久域名不知道为什么 比思论坛的网站打不开 怎么办呐暴力破解rar对RAR压缩包进行解压时需要密码,使用暴力破解仍无法解码该怎么办?pat是什么格式pat是什么格式的文件啊手机软件开发工具怎样开发手机软件wow服务器状态我电脑上的魔兽服务器状态很好.但是还是玩不起来.请问可以玩了不?网络安全密钥一般路由器是网络安全密钥是多少
华众虚拟主机管理系统 阿里云邮箱登陆首页 独享100m 加勒比群岛 namecheap rak机房 gitcafe 阿里云代金券 青果网 国外php空间 国内加速器 日本空间 网站挂马检测工具 太原联通测速平台 dux hkg qq对话框 阿里云邮箱登陆地址 免费php空间 美国迈阿密 更多