来自:编程剑谱
我应该比大多数读者年龄都要大一些,所以我就自称”谱哥“,做事靠谱,为人靠谱的意思;针对 C 语言三大核心:数组、指针、函数,今天继续写技术文章。
上次 C 语言写到了数组,有些书是先讲指针,有些书是先讲函数,按照我以前学习 C 语言的顺序,以及对 C 语言的理解,学习的顺序是这样的:数组--->指针--->函数,所以本篇文章讲解 C 之指针。
C 语言是值得好好学习的一门语言,是一门基础语言,更是我编程入门的语言,其中很多编程思想,至今影响着我,在工作中对我的帮助很大。
基本概念
学习 C 语言之指针,必须强烈推荐一本书:《C 和指针》,好好看,把这本书吃透,C 指针就差不多了。
1、指针有两个要素
(1)、首地址:内存中多个连续字节的第一个字节的编号;在 32 位系统下,每个字节的编号都是 32 位二进制,也就是 4B,任何类型的指针都只占 4B 的存储空间。
1char *a; char* a;
2short *b; short* b;
3int *c; int* c;
4double *d; double* d;
5
6printf("%d %d %d %d
", sizeof(a), sizeof(b), sizeof(c), sizeof(d));
7//32位系统下,结果为:4 4 4 4,证明了只要是指针,都是 4B,其实指针的值就是内存中一个字节的地址,仅仅是代表了一个编号而已
(2)、指针所指向空间的数据类型:以指针的值为首地址,其所指向的空间的数据类型。
2、指针类与值类
我们之前学习过的各种数据类型:int、float 等等都统称为值类。
指针类和值类不能简单的适用以前所讲述的语法,例如:自动类型转换和强制类型转换是不适用指针类的。
3、指针的基本运算
& 和 *
A、
&:取地址运算符,单目运算符,优先级在单目运算符中比较低,低于 ++、--。
&左值(左值只能是空间、