您的位置:首页 > 编程语言 > C语言/C++

c语言指针操作

2016-07-27 21:22 246 查看
指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。指针变量声明的一般形式为:

type *var-name;

在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯。赋为 NULL 值的指针被称为空指针。

NULL 指针是一个定义在标准库中的值为零的常量

可以对指针进行四种算术运算:++、--、+、-。

假设 ptr 是一个指向地址 1000 的整型指针,是一个 32 位的整数,让我们对该指针执行下列的算术运算:

ptr++

在执行完上述的运算之后,ptr 将指向位置 1004,因为 ptr 每增加一次,它都将指向下一个整数位置,即当前位置往后移 4 个字节(一个整型变量占用4字节)。

如果 ptr 指向一个地址为 1000 的字符(char占用1个字节),上面的运算会导致指针指向位置 1001,因为下一个字符位置是在 1001。

#include <stdio.h>

int main(){
int age=20;//实际变量
int *p_age;//指针变量声明

p_age=&age;

printf("变量age的内存地址:%x\n",&age);

printf("p_age存储的地址:%x\n",p_age);

printf("指针p_age的值:%d\n",*p_age);

return 0;
}
变量age的内存地址:18ff44
p_age存储的地址:18ff44
指针p_age的值:20



指针数组:让数组存储指向 int 或 char 或其他数据类型的指针


#include <stdio.h>

const  int MAX=3;

int main(){
int age[]={1,5,20};
int i,*p_age[MAX];

for(i=0;i<MAX;i++){
p_age[i]=&age[i];
}

for(i=0;i<MAX;i++){
printf("age[%d]的值:%d\n",i,*p_age[i]);
}

return 0;
}
age[0]的值:1
age[1]的值:5
age[2]的值:20

指针的指针:

指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链。通常,一个指针包含一个变量的地址。当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址,第二个指针指向包含实际值的位置

#include <stdio.h>

int main(){
int age;
int *p_age;
int **pp_age;

age=100;

p_age=&age;//获取age的地址

pp_age=&p_age;//使用&获取p_age的地址

printf("age的值:%d\n",age);
printf("指针*p_age的值:%d\n",*p_age);
printf("指针**pp_age的值:%d\n",**pp_age);
}
age的值:100
指针*p_age的值:100
指针**pp_age的值:100
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: