指针

指针--一种类型,指针类型(*);

 指针变量--指针只能指向某块地址,不能给一个常量值。 

整形指针

int * 

//字符串

char * 

//浮点型指针

float *

int a = 10;

int *p = &a;(取地址。指针类型和a是一样的 

指针在内存占据8个字节,与类型无关 

通过指针变量p改变a的值

1.获取变量p的值

2.使用*获取某个地址里面的值。

*p = 20.即可改变源地址@a,里面a的值。

2)获取数组的地址

int array 【5】={1,2,3,4,5}

printf("%p ,array") -----获取首地址

printf("%p,&array[0]")----获取第一个元素的地址

printf("%p ,array[0]")-----无效,因为array [0]是取值1,要用%d.

 

printf("array + 1 %p ,array+ 1")   -----地址+1,地址字节是4,(array + 1 %p ,array+ 1*4字节),所以是地址+字节数

 

1.常量指针

const  int*pA = &a

*pA = 20  ------不能改变指针指向的变量的值

pA = &b -----可以改变指针的指向

2.指针常量

int *const pA = &a;

*pA = 20-----可以改变指针指向的变量的值

pA = &b;-------不能改变指针的指向

3.指向常量的常量指针

const int *const pA-------指针的指向和指向的值都不可以改变。 

 

什么时候需要指针

1.访问函数,在函数内部需要改变外部传入的变量的值

2.函数里面需要得到一个连续存储空间的首地址

3.动态分配内存,需要记录分配的内存的首地址

 

posted @ 2015-12-11 15:35  蜗牛才是大牛  阅读(142)  评论(0编辑  收藏  举报