今天花了一上午把《征服C指针》这本书的第一章看了下,以下是学习到的一点知识和心得
什么是标量
标量就是指char,int double和枚举型等数值类型,一级指针
什么是聚合类型
像数组,结构体和共用体这样的将多个标量进行组合的类型,叫做聚合类型
Str == “abc”,除了用比较的是首字符的指针,还可以用什么来解释
字符串是char类型的数组,是聚合类型,就不能用==来比较(言外之意是只有标量才可以用==来比较)
指针实际上存在的是什么
指针类型,指向int的指针类型,指向double的指针类型
值得注意的是,先有“指针类型”,因为有了指针类型,所有有了“指针类型的变量”和“指针类型的值”
“指针类型的值”实际上指的是什么
内存的地址
变量的声明和在内存中的顺序
变量不一定按照声明的顺序保存在内存中
对变量使用&运算符
对变量使用&运算符,可以得到该变量的地址,这个地址称为指向该变量的指针
Int* hoge_p的类型
这里声明的变量是hoge_p,它的类型是“指向int类型的指针”
指针变量的类型
指针变量的类型与其说是类型,我认为倒不如说是限制,告诉计算机它所保存的地址的变量是多少字节的,以便解引用的时候能够正确访问
指针变量的+1和+N
对指针+1运算,地址的值会增加当前指针所指向的数据类型的长度,+N运算,会前进“当前指针指向的数据类型的长度X N”
C语言的函数,参数的传递传的是“值”,这种方式传递的是参数的副本
C语言中,函数的形参都和调用时被设定值得局部变量一样
实参和形参得关系
实参是调用函数时得参数
形参是接受实参得一方
指针好玩的写法
*(p + i)可以改写成*(i+p),也可以写成i[p]