关于定义指针,请教~

如:int**p,*q,k=10;q=&k;p=&q;printf("%d",**p);在指针定义中,为什么要使用**p来定义一个指针的指针,为什么不能直接用*p来定义一... 如:
int **p,*q,k=10;
q=&k;
p=&q;
printf("%d",**p);
在指针定义中,为什么要使用**p来定义一个指针的指针,为什么不能直接用*p来定义一个指针的指针呢?**p本身就代表一个开辟一个4字节空间来装一个变量的地址,那么,那为什么不能直接装*q的地址呢?
还有是不是指针的指针,没多一层嵌套就加一个*号呢,像是***p这样。
这是为什么呀?指针空间不能装指针的地址吗?指针的地址和普通变量的地址有什么区别?还要分开装?
还有是否可以将整形变量用来装地址数据呢?然后用指针把整形存储的地址数据取出来在使用呢?因为本身整形变量的值和它的地址都是一串数据,并且都是32位4字节嘛。

请教,谢谢~
那我想问一下,是不是嵌套的指针,如*****p,这样在定义时就要定义好?这样使用时不是有些不方便吗,因为我可能并不知道它会嵌套几层,难道写完程序还要数一下?
非常 谢浩1991 的回答,请教一下这个,完了给你加分,非常谢谢。
展开
 我来答
谢浩bd
2010-11-30 · TA获得超过309个赞
知道答主
回答量:61
采纳率:0%
帮助的人:70.8万
展开全部
楼主问问题比较多,我只说下我的看法。
(1)声明 int **p;
变量p是一个指针,而它所指向的类型是一个整型指针,这样就定义了一个指向指针的指针。
而int *q;
变量q是一个指针,它所指向的类型是一个整型,所以不能用来定义一个指向指针的指针。
q的值是一个地址,而*q表示的是q所指向的地址中的值。
(2)*q是一个值而不是一个地址。
(3)多嵌套一层,应该是要多加一个*。其实*表示的是取变量所指向的地址存储的数值。
(4)指针变量的地址和普通变量的地址是相同的。使用指针更加灵活。这个你使用多了就知道了。
(5)可以用整型变量来装地址,理由跟你说得差不多,但是一般不这么用。
这里我写的程序,你看看,希望对你有帮助。

#include <stdio.h>

int main()
{
int **p, *q, k=10;

#if 0
q = &k;
p = &q;
printf("%d\n",**p);
#endif

#if 1
// 初始化指针,如果不初始化后面将出错。
q = (int *)malloc(sizeof(int *));
p = (int **)malloc(sizeof(int **));
*p = (int *)malloc(sizeof(int *));
*q = k;
**p = *q;
printf("%d\n",**p);

// 分配了地址,记得及时释放。
free(q);
free(*p);
free(p);
#endif

return 0;
}
TableDI
2024-07-18 广告
Excel一键自动匹配,在线免费vlookup工具,3步完成!Excel在线免费vlookup工具,点击4步自动完成vlookup匹配,无需手写公式,免费使用!... 点击进入详情页
本回答由TableDI提供
C语言二级
2020-12-28
知道答主
回答量:46
采纳率:0%
帮助的人:2.2万
展开全部

063指针的引入和定义

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wxmeng04
2010-12-02 · TA获得超过556个赞
知道小有建树答主
回答量:328
采纳率:0%
帮助的人:118万
展开全部
是的,你自己定义的是几重指针,必须自己很清楚,编译器只判断你使用时是否合法。你不知道嵌套几层就没法用,这就是C的规则,必须遵循。另外通常指针最多用到三重,一般不会再高了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5e290eb
2010-12-09 · 超过15用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:0
展开全部
C语言是一个强类型语言,如果不强制转换的话,那么它就一直代表一种类型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6e2d19dbe
2010-12-04
知道答主
回答量:95
采纳率:0%
帮助的人:36.2万
展开全部
你要去你朋友的朋友家,你得先找你朋友,你朋友再去找他那个朋友。你要问为什么我不能和我要找的那个人成为朋友,因为程序很大,如同现实生活一样,你不可能和所有人成为朋友。
要了解一个知识最好的方法是去用它而不是想它。
你又问“我是不是要提前知道这个指针是多少层的”,当你用一个三层的指针时,你肯定是要用它指向二层的指针,这个二层的指针或许是你函数的参数,总之它就在你周围。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式