C++基础之指针(1)

原创 2016年08月29日 14:21:53

记得在起初学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》,哈哈宝宝我二刷去惹。


版权声明:本文为博主原创文章,未经博主允许不得转载。

C++ 指针与数组的练习

int main() { int array[10] = { 6, 1, 2, 4, 5, 7, 9, 8 }; int *p1 = array; int *p = &arra...
  • mir_age
  • mir_age
  • 2017年06月25日 15:58
  • 255

C++指针——(1)指针基础

1.指针变量 指针变量(简称指针pointer),用来保存内存地址的变量。 内存地址中每一个字节都会对应一个唯一的地址。变量往往是由若干个字节组成的,但我们把变量第一个字节起始地址定...
  • polyeer
  • polyeer
  • 2017年01月30日 22:07
  • 32

指针变量+1,代表着什么?

int a=10;int *pofa=&a;pofa=pofa+1; 问题就是pofa的值是不是pofa的值加一呢?很明显,pofa是一个指针变量,它指向整形变量a的地址,那么pofa到底是多少呢?答...
  • bravekingzhang
  • bravekingzhang
  • 2011年05月18日 21:12
  • 4225

NOI题解(1.2编程基础之变量定义、赋值及转换)

01:整型数据类型存储空间大小 #include "iostream" using namespace std; int main() { int a; short b; co...
  • v_xchen_v
  • v_xchen_v
  • 2016年08月26日 00:05
  • 2797

C++基础--指针1

什么是指针呢? 首先,指针是一个变量, char* ptr int* ptr float* ptr//基本数据类型对应的指针 int (*pfun)(char arg1,intarg2)//函数...
  • wuhaiwei002
  • wuhaiwei002
  • 2015年12月25日 00:12
  • 160

c++ 指针基础1

  数组名与指针变量的区别:数组名只是指针常量,其值是不能修改的;  (int * const pi;    const  int * pi = int const * pi)解释: const  i...
  • ronghua_liu
  • ronghua_liu
  • 2011年03月16日 14:00
  • 297

c++的三种指针

1.指向常量的指针 指针所指的对象是常量,指针本身是常量。#include using namespace std; void main() { int stop; cons...
  • snicolashe
  • snicolashe
  • 2015年06月28日 10:24
  • 1276

C语言基础之指针与数组

从之前看数据结构开始,就觉得自己的C语言基础很弱,对数据结构中的东西理解很吃力,直到19号晚上看到堆栈中的push和pop函数,在一个举一反三的例子中,涉及到了值传递与地址传递。才发现自己C语言学的完...
  • De__zxc
  • De__zxc
  • 2016年10月21日 20:17
  • 166

C/C++指针的经典笔试面试题

0.预备知识,最基础的指针 其实最基础的指针也就应该如下面代码: int a; int* p=&a; 也就是说,声明了一个int变量a,然后声明一个int 的指针,*p指向a的地址,&也就是取...
  • xiyangyang8
  • xiyangyang8
  • 2016年02月22日 00:09
  • 1586

c++基础之指针

常量指针:指向常量的指针  const int  a=9; const int* p=&a;  //若写int * p=&a;用g++编译会报错,而gcc不会   注: (void*) 5...
  • conjimmy
  • conjimmy
  • 2011年12月12日 12:08
  • 397
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++基础之指针(1)
举报原因:
原因补充:

(最多只允许输入30个字)