| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6755 人关注过本帖
标题:请问怎么理解二级指针和一级指针呢,新手求教
取消只看楼主 加入收藏
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
请问怎么理解二级指针和一级指针呢,新手求教
程序代码:
#include<stdio.h>
int main()
{
int value = 5;

 
int *ptr = &value;
printf ("%d",*ptr);

 
int **ptrptr = &ptr;
printf ("%d",**ptrptr);
}

搜索更多相关主题的帖子: 二级 printf 指针 int value 
2020-03-31 11:57
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
收藏
得分:0 
理解对象指针就可以了
解对象指针只需要注意2个方面
一个是一元&运算和一元*运算
另一个是指针算术

从这句话中成功的让我产生了3点疑问
1,对象指针是什么
2,一元&和一元*是什么,这个可以查资料
3,关于指针算数,目前我知道的是数组,还有迭代器好像有这个指针算数,那和二级指针有什么关联呢?
其他的也就强制类型转换做一些骚操作 和 一点生存期的问题

这一句话有4点疑问
1指针强制类型转换?
2。指针里面装的不是地址吗?
3地址也分类型吗?
4地址可以进行类型转换吗?


把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-31 13:28
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
收藏
得分:0 
越来越糊涂了,我没想那么复杂,就是想知道二级指针应该怎么理解,,

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-31 14:19
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
收藏
得分:0 
算了,我先自己摸索摸索吧,然后再和您探讨二级指针的运算和类型转换问题

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-31 14:21
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
收藏
得分:0 
可是我不知道什么是二级指针?对二级指针不理解,又怎么会理解二级指针的一元&和一元*的指针算术呢
学猪跑,起码要知道猪长什么样子吧,还要知道猪怎么跑的吧

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-31 14:28
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
收藏
得分:0 
好好好,我就是那个,只懂一级指针不懂二级指针的猪猪,行了吧

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-31 14:49
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
收藏
得分:0 
以下是引用lin5161678在2020-3-31 14:52:22的发言:

那么 你描述一下 一级指针的 一元&操作和一元*操作 和 指针算术
比如 int*

我不懂什么是一元二元的
&符号目前我知道有三种意思
1,位运算的和运算符英文是bit-and
2,是引用符号
3,是取地址符号
*目前我知道三种
1,乘法符号
2,指针符号
3,解引用符号
关于一级指针,用的最多的是指针运算符,取地址运算符和取消引用运算符
 在定义一个变量的时候会分配一个空闲地址,然后变量的任何值会存在地址中
程序代码:
#include <iostream>
using namespace std;
int main()
{
    int num=4;
    cout<<&num<<"    ";
    int * p=&num;
    cout<<*p;

}

cout<<&num<<"   

从上面的例子看,使用了取地址符号看见了分配变量的地址
int * p=&num;

p是指向一个int类型的指针,p里装的是num的指针,num通过取地址符,返回一个带有值地址的指针,p接收num的地址
cout<<*p;

此地为解引用符号,取消引用访问特定地址的值
指针算数
我目前只知道数组啊,还有迭代器,本人基础差,还需要学习的更多,
程序代码:
#include <iostream>
#include<vector>
using namespace std;
void arraynum()
{  vector <int>myarray{1,2,3,4};
myarray.resize(5);
cout<<&myarray[0]<<"  ";
cout<<&myarray[1]<<"  ";
cout<<&myarray[2]<<"  ";
cout<<&myarray[3]<<"  ";
cout<<&myarray[4]<<"  ";

}
int main()
{
    int num=4;
    cout<<&num<<"    ";
    int * p=&num;
    auto tex1= p+1;
    auto tex2=p+2;
    auto tex3=p+3;
    cout<<tex1<<"  ";
    cout<<tex2;
    arraynum();
}

从上面可以看见,p+1,+2,+3..表示加了多少类型字节数,int型的
p+3,表示地址加了3个整数12个字节,
如果用在数组上表示数组第几个元素的地址,使用解引用符号就可以看见里面的值*(myarray+1)

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-31 16:20
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
收藏
得分:0 
不可以
程序代码:
#include <iostream>
#include<vector>
using namespace std;
void arraynum()
{  vector <int>myarray{1,2,3,4};
myarray.resize(5);
cout<<&myarray[0]<<"  ";
cout<<&myarray[1]<<"  ";
cout<<&myarray[2]<<"  ";
cout<<&myarray[3]<<"  ";
cout<<&myarray[4]<<"  ";

}
int main()
{
    int num=4;
    cout<<&num<<"    ";
     int **p=&num;//这里报错
    auto tex1= p+1;
    auto tex2=p+2;
    auto tex3=p+3;
    cout<<tex1<<"  ";
    cout<<tex2;
    arraynum();
}


把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-31 17:55
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
收藏
得分:0 
     int **p=&*num;
这样?
int **p=&**num;这样?哪样?

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-31 18:10
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
收藏
得分:0 
刚刚查了资料,;理解了一些,发现除了指向类型对象的指针还有很多,比如函数指针,指向成员的指针,指向类对象的指针,直线常量对象的指针,指向成员函数的指针,viod指针,等等等,二级指针这么偏新手的东西我居然理解的那么吃力,不过从我刚看的资料,和通过您们的知识讨论中,我好像理解一些了,倒着想指针就比较简单了,
    int*a;
比如 int**p=&a;
是指向int*指针,那么指针标识符也应该是接收的是int*类型的, 其他的需要自己慢慢消化呀,路上还是需要您们的陪伴呀
感谢有您们

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-31 20:52
快速回复:请问怎么理解二级指针和一级指针呢,新手求教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031284 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved