指针

这几天学树,倒是天天用到指针。作为一个按着信息学奥赛一本通网站往上爬的编程学习者,似乎学不到指针,因为没有这一章。指针其实是个地址,所以嘛,还有一个省空间的好处。

废话也不多说,看了一堆文章,不如写一写,顺便来一个日更。


1.定义、声明:

类型 *变量名;

type *var-name;

如:

int *p;

int *a,&b,&c;

char *ch;

string *str;

double *d;

……

2.取址

其实地址用到的地方挺多的,sort函数、造树……用处挺多、挺广。

最简单的取址是直接用&(7上面那一个),但比如说数组就不一样了,直接上名字。

int x;//数

int a[10];//数组

int *p;//指针

p=&x;

sort(a+1,a+n,cmp);

……

特别声明一下,这时指针就不加“*”符号了。

3.访问

访问可以用指针,加上一个“*”就行了。

如:

cout<<*p<

*p=5;

*p=a;

……

4.注意点

(1)不要串类型

   即不要把不同类型的数据和指针配合起来,这又名“混搭”,是不可以的。    

   如char和int、string和bool……

   甚至int和long long也不要串,难免会出问题。

例:

int *p;

char c;

*p=c;

p=&c;

……

double *d;

long long l;

d=&l;

*d=l;

……

(2)使用定义typedef

    这句话在建树时常用,可以定义一种“树指针”,控制子树,尤其是二叉树,左子树指针、右子树指针,当然可以用int,但非空间,有时会运行错误。

如:

typedef struct tree;

typedef tr *tre;

struct tree{

  char data;

  tre leftchild,rightchild;

};

……


总结:指针是取址用的,储存某物的位置。当然有时可以当普通结构用,加个“*”就够了,但主要是为了省空间,不用int和数组代替地址。

可以日更了,完工!

你可能感兴趣的:(指针)