4.c语言程序设计--指针

 简介

  在计算机中, 所有的数据都是存放在存储器中的, 不同的数据类型占有的内存空间的大小各不相同。内存是以字节为单位的连续编址空间, 每一个字节单元对应着一个唯一的编号, 这个编号被称为内存单元的地址。比如: int类型占4个字节, char类型占1个字节等。内存为变量分配存储空间的首个字节单元的地址, 称之为该变量的地址。地址用来标识每一个存储单元, 方便用户对存储单元中的数据进行正确的访问。在高级语言中地址形象地称为指针。 

地址与指针

指针相对于一个内存单元来说,指的是单元的地址,该单元的内容里面存放的是数据。在C语言中,允许用指针变量来存放指针,因此,一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针。
 

指针变量及其定义

指针变量是存放一个变量地址的变量,不同于其他类型变量,它是专门用来存放内存地址的,也称为地址变量。定义指针变量的一般形式为:类型说明符*变量名。 
类型说明符表示指针变量所指向变量的数据类型;*表示这是一个指针变量;变量名表示定义的指针变量名,其值是一个地址,例如:char*p1;表示p1是一个指针变量,它的值是某个字符变量的地址。
 

变量内存的查看:

在地址处输入 &Number ,查看Number 变量的内存地址和存储的值

#include <stdio.h>

//指针
// &取地址运算符
// *间接运算符,指针  操作内存地址

int main()
{    
    int Number = 11;
    int *pNum = &Number;//Number的地址0x012FFD#C赋值给指针pNum
    *pNum = 6;//*表示取后面地址的值,*后面跟的是地址
    printf("Number的值和地址是:%d,%x,%x", Number, &Number,pNum);
    return 0;
}

指针的实例应用:

指针直接操控地址改变变量的值

#include <stdio.h>

//指针的基本实例
void add(int * a, int * b)//加法函数,传参数为地址
{
    int temp = *a + *b;//操控地址相加里面的值
    *a = temp;
}

int main()
{    
    int x = 5;
    int y = 6;
    add(&x, &y);//传递x,y的地址过去
    printf("%d",x);
    return 0;
}

 指针和数组

#include <stdio.h>

//指针数组的基本实例

int main()
{    
    int Number[5] = { 0,1,2,3,4 };
    int * p = Number;//Number 就是 Number[0]的地址
    int * q = p + 1;//地址加1,代表加了一个类型长度,也就是 &Number[0]+1=&Number[1]
    return 0;
}
//Number[0] 和p[0]相等
原文地址:https://www.cnblogs.com/trevain/p/14462943.html