C++基础之指针(1)

记得在起初学C++时感觉最难懂的就是指针了,今天来把有关的内容整理一下,如有错误望指正,在复习的同时如果能与各位同学交流交流,那是极好的。

1、address

为variable和function分配address的工作是分几步完成的,在compile与link的过程中,只给各variable分配relative address,而absolute address 要到程序运行的时候才能确定。如果是local variable,那更惨,要到该local variable所属的function被调用时才进行address assign。

所以,同一个variable,多次运行中可能被分配到不同的address,this is why we do not care the exact address of varibles.

2、address的表示

C++规定:

(1)、the address of arry 可以用the arry's name 表示,其address is the address of the first element;

(2)、the address of function 可以用the function's name表示;

(3)、the address of variable可以用operational character “&”求得,for example “&x”。

3、pointer

definition:某个variable的memory address就是该variable的pointer。

pointer也是variable,它的type是其所指向variable的type,pointer variable的值就是其所指variable在memory中的address。

声明形式: 

数据类型* 指针变量名

4、operations of pointer

(1)、“*”、“&”运算

*:指针运算符,返回pointer所指的基类variable的值

&:取地址运算符,返回variable的地址,即指针。

<span style="font-size:14px;">void exc(int*a,int*b)
{
	int tmp;
	tmp=*a;
	*a=*b;
	*b=tmp;
}</span>
#include <iostream>
#include "hello.h"
using namespace std;
int main()
{
	int a=3,b=4;
	cout<<a<<"  "<<b<<endl;
	exc(&a,&b);
	cout<<a<<"  "<<b<<endl;
	return 0;
}
(2)、pointer variable arithmetic operation

只有addition and subtraction!

(3)、pointer variable comparison operation

(4)、pointer variable 的下标运算

#include <iostream>
#include "hello.h"
using namespace std;
int main()
{
	int a[]={1,2,3,4,5};
	cout<<a[2]<<endl;
	int *ptr=a;
	cout<<ptr[2]<<"   "<<*(ptr+2)<<endl;
	return 0;
}


ok,连续写了near one hour的blog,感觉waist也不痛了,legs也不酸了,一口气能上eight floors。今天的blog是为了的刘雨雨小盆友而写的,虽然她疯疯哒像只小monster,但她还萌萌哒呀!

刚才用到waist这个单词就想到了twist,就想到了《SAW》,哈哈宝宝我二刷去惹。


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013983025/article/details/52352245
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭