指针变量都是存地址,为什么要有数据类型?

在看本文章之前,请先了解:

指针的介绍之简单的名词概念梳理

指针类型、指针所指向的类型、指针所指向的内存区、指针自身所占据的内存

总结指针的算术运算

指针变量存的是地址

首先,要明确,无论指针变量是什么类型,他们都只有一个目的——存放地址。其他任何东西都不存。

指针变量有哪些数据类型

指针变量归根结底还是变量,它也有变量的特性——具有数据类型。

在C语言中,变量有基本数据类型:整型、浮点型和字符型;导出数据类型:结构体类型等。

所以对应的,指向这些数据类型变量的指针变量。就有着相应的数据类型。

例如:int*、double*、char*、struct Student*(student是自己定义的)等。

为什么要有数据类型?

——告诉编译器以多少个字节为单位进行读取和算术计算。

例如在这篇文章中:总结指针的算术运算

#include <stdio.h>

int main(void) {
    int arr[] = {1, 2, 3 ,4 ,5};
    int* p = arr;
    printf("指针p指向的地址:%p, 对应的元素是:%d, 它的下一个元素是:%d, 地址是:%p\n",
           p+1, *p+1, *p+2, p+2);
    return 0;
}

因为指针变量指向的变量有数据类型,如果指针变量没有数据类型,那么编译器就不知道在算术运算中加减多少字节来获取下一个元素数据。

有了数据类型,就可以明确该加减多少个(typeof(your data type))个字节。

 

作者: 高志远

高志远,24岁,男生

发表评论

邮箱地址不会被公开。