在c++语言中char***p是什么意思?
4个回答
展开全部
char* 是声明一个字符类型的指针。
比如:chat* y;
就是声明一个指针y,这个指针指向的地址上只能存放字符类型的值。
扩展资料:
在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。
在高级语言中,指针有效地取代了在低级语言,如汇编语言与机器码,直接使用通用暂存器的地方,但它可能只适用于合法地址之中。指针参考了存储器中某个地址,通过被称为反参考指针的动作,可以取出在那个地址中存储的值。
作个比喻,假设将电脑存储器当成一本书,一张内容记录了某个页码加上行号的便利贴,可以被当成是一个指向特定页面的指针;根据便利粘贴面的页码与行号,翻到那个页面,把那个页面的那一行文字读出来,就相当于是对这个指针进行反参考的动作。
展开全部
char ***p代表三重指针,我们举个简单的例子,char c_val = 'e';char *p1, **p2, ***p;
因为上面都是变量,于是编译器都给它们分配了不同的内存空间,假设c_val的地址是0x12345678,
p1的地址是0x1234567c,p2的地址是0x12345680,p的地址是0x12345684,当执行p1 = &c_val时,
p1地址处,即0x1234567c处存放的数据是0x12345678,同理当执行p2 = &p1时,p2地址(即0x12345680)
处存放的数据是p1的地址(0x1234567c),当执行p = &p2时,p地址(即0x12345684)处存放的
数据为p2的地址(0x12345680)。于是p 即为0x12345680,*p为0x12345680处数据,即为
0x1234567c,**p 为*p所指向地址处的数据,*p为(0x1234567c),*p地址处即是0x1234567c地址处,
0x1234567c地址处数据为0x12345678,即**p为0x12345678,同理***p即是**p地址处的数据,
即0x12345678地址处数据,0x12345678地址存放的数据时'e',即***p为'e'。希望上面的分析可以帮到你。
因为上面都是变量,于是编译器都给它们分配了不同的内存空间,假设c_val的地址是0x12345678,
p1的地址是0x1234567c,p2的地址是0x12345680,p的地址是0x12345684,当执行p1 = &c_val时,
p1地址处,即0x1234567c处存放的数据是0x12345678,同理当执行p2 = &p1时,p2地址(即0x12345680)
处存放的数据是p1的地址(0x1234567c),当执行p = &p2时,p地址(即0x12345684)处存放的
数据为p2的地址(0x12345680)。于是p 即为0x12345680,*p为0x12345680处数据,即为
0x1234567c,**p 为*p所指向地址处的数据,*p为(0x1234567c),*p地址处即是0x1234567c地址处,
0x1234567c地址处数据为0x12345678,即**p为0x12345678,同理***p即是**p地址处的数据,
即0x12345678地址处数据,0x12345678地址存放的数据时'e',即***p为'e'。希望上面的分析可以帮到你。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
三层指针,相当于三维数组
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看楼下吧
我潜水
我潜水
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询