← 返回首页
C语言系列教程(二十六)
发表时间:2021-03-28 08:49:11
指针

指针就是内存地址,例如0x000012ea。

1.什么是指针类型

指针类型是一种新的类型,常见的类型有整形(int),用来存放整数;字符型(char),用来存放字符或字符串;浮点型(float),用来存放浮点型数据,比如小数。而指针类型是一种与他们独立的新类型,它存放的是各种数据存放的地址。它的格式为:类型 ,(为间接访问运算符/解引用指针)。

2.指针与指针变量

指针是一个地址,而指针变量是存放地址的变量。

实例:

#include <stdio.h>
#include <stdlib.h>


int main() {
    int x =100;
    int* p = &x; //p称为指针变量,p里面保存的值就是指针 

    printf("指针变量p里面保存的值:%d\n",p);
    printf("指针变量p指向的内存单元的值:%d\n",*p);
    printf("指针变量p的地址是:%d\n",&p);
    return 0;
}

运行结果:

指针变量p里面保存的值:6487580
指针变量p指向的内存单元的值:100
指针变量p的地址是:6487568

3.取址和取值

对于 int x = 100; int *p=&x;

符号 含义
&p 获得指针变量p的地址
*p 获得指针变量p所指向的内存单元的值

假设有一个 int 类型的变量 x,p 是指向它的指针,那么&x和&p分别是什么意思呢?

分析可知:

&x 等同于x , &p等同于p

例如:

#include <stdio.h>
#include <stdlib.h>


int main() {
    int x =100;
    int* p = &x; //p称为指针变量,p里面保存的值就是指针 

    printf("指针变量p里面保存的值:%d\n",p);
    printf("x的地址值是:%d\n",&x);
    printf("指针变量p里面保存的值:%d\n",&*p);

    printf("指针变量p指向的内存单元的值:%d\n",*p);
    printf("x的值是:%d\n",x);
    printf("指针变量p指向的内存单元的值:%d\n",*&x);

    printf("指针变量p的地址是:%d\n",&p);
    return 0;
}

运行结果:

指针变量p里面保存的值:6487580
x的地址值是:6487580
指针变量p里面保存的值:6487580
指针变量p指向的内存单元的值:100
x的值是:100
指针变量p指向的内存单元的值:100
指针变量p的地址是:6487568