C/C++语言中的指针和数组我总是理解不了,谁能给我详细讲解一下?

我理解能力太差了,指针和数组我总是搞不清楚该怎么用,谁能给我详细讲解一下?我已经看了大量的例程与课程,就是学不会指针和数组,关键还是理解不了,指针和数组倒底应该怎么用?指... 我理解能力太差了,指针和数组我总是搞不清楚该怎么用,谁能给我详细讲解一下?我已经看了大量的例程与课程,就是学不会指针和数组,关键还是理解不了,指针和数组倒底应该怎么用?指向了某地有什么用呢?
还有符号“->”我也搞不清楚是怎么指的。。。

求有耐心的人士认真讲解,我会认真发分的,谢谢各位哥哥姐姐弟弟妹妹了!
还有,我真的很笨,所以。。。你们懂的。。
展开
 我来答
匿名用户
2013-06-26
展开全部

1. 指针里面存的是地址,比如

int a = 10;
int *p = &a; //此时p这个变量在内存中占4个字节,这四个字节里面存储的是a的地址,比如0xaabbccdd
std::cout << *p << std::endl; // 当你通过*p来访问p的时候,你的编译器会这样理解。从p所存储的4个字节那个地址开始,读取一个int变量,说白了就是从0xaabbccdd这个地址开始,读取一个int数据出来,这个数据就是10啦。

2. 数组,比如

int arr[2] = {0}; // 那么你的内存中出现了连续的两个四节的空间,因为每一个int占用了一个4个字节。这八个字节都存储了0x00000000,也就是十进制的0
// 数据已经在内存里面了,那么我如何访问这个内存地址呢?就是通过arr
std::cout << *(a+1) << std::endl;
std::cout << a[1] << std::endl; //这两个是等价的,虽然他们看起来不同。在编译器来说,都一样。意思就是说,从arr这个地址开始读取第二个字节。

3. 任何数据都是存在内存里面的,不管是普通int,还是数组int。

为了访问这些数据,你需要一个地址,这个地址可以用指针来表示,也可以用数组名来表示,比如上面的arr,其实你的申请的函数,比如void func(), func这名字本身也是一个地址。


4. 对于一个类

class test
{
public:
    void func(){};
};

int main()
{
    test t1;
    t1.func(); // 如果是直接声明,可以使用.来访问。
    test *t_ptr = new t1;
    t_ptr->func(); // 如果通过指针来指向一个内存空间的时候,你就要通过->的方式来调用这个class里面的函数,或者变量了。
}


讲的不好还请多原谅,不要给我分数,我不需要,谢谢。

追问
那t_ptr中的下划线是什么意思?
追答
就是一个名字啦,没什么特别的含义,哈哈。
dl狼狼
2013-06-26 · TA获得超过196个赞
知道答主
回答量:38
采纳率:0%
帮助的人:40万
展开全部
数组就像楼房里挨着的一个个房间,每个房间里都是有着相同数据类型的数据
访问数组元素的下标就像是门牌号
指针就像是一个路标 指向一个地方
用字符串给指针赋值的意思是把这串字符在内存中的首地址给指针
其实数组名的本质也是一个地址,不过这个地址不允许修改
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wujintao1014
2013-06-26 · 超过17用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:27.3万
展开全部
首先你要知道一个变量对应一个地址空间,比如a=1,a是一个变量,那a在内存空间里就有一个地址(比如地址为B),就像一个房间,1代表里面的人,B就是门牌号。

然后你应该知道int a是用来定义变量的,那如何来定义地址呢?那就用指针int* a。
意思就是想要得到内容就用变量,想得到这个内容所存放的地址就用指针

再然后用int a定义之后,a就代表内容,用&a来代表a的地址。用int* a定义了指针之后,*a就代表内容,a就变成了地址。

至于数组和指针比较像,比如定义了一个int a[10],那a[0]-a[9]就是内容,这里要注意,这里的a就是整个数组第一个内容a[0]的地址

至于用法用处就比较多了 想更多了解可以追问 或者加Q
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鎏金阁
2013-06-26 · TA获得超过580个赞
知道小有建树答主
回答量:483
采纳率:80%
帮助的人:361万
展开全部
再举个通俗的例子:假设班级举行外出活动,约定把具体活动地点写在教室黑板blackboard上。这时,黑板就是指针变量blackboard,黑板中的内容就是索引地址。同一块黑板变量,可以改编不同的活动地点,也即指向不同的活动地址。而各地址的活动内容要到当地才能知晓,即*blackboard是指针所指向的真正内容。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yunji777
2013-06-26 · 超过21用户采纳过TA的回答
知道答主
回答量:103
采纳率:0%
帮助的人:47.8万
展开全部
去学汇编``分分钟的事情`.
更多追问追答
追问
汇编。。。
追答

哦对了`我发一张一次调试的`给你看``看你悟性了``


so easy 

真的去学汇编`.要不`你就云里雾里`

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式