C 指针(Pointer)
(上半个学期学了半个学期的C, 暑假想用还是磕磕绊绊, 不服🤟😂😂😂, 感觉教材(谭浩强《C 程序设计(第五版)》讲得很细但是不是很容易理解掌握(个人感觉, 大佬勿喷😂😂😂), 写几篇文章总结一下, 欢迎大家评论区补充哦).
重要性
指针作为C语言的重要特色, 其对内存地址的操作体现与硬件贴合之紧密(相对),也凸显了C的最佳试用场景(与硬件相关的场景-arduino, 嵌入式). 可以说不掌握指针就是没掌握C的精华.
What are Pointers(指针)?
先引用一段Wikipedia的介绍
C supports the use of pointers, a type of reference that records the address or location of an object or function in memory. Pointers can be dereferenced to access data stored at the address pointed to, or to invoke a pointed-to function.
简而言之: 指针 = 地址, Coder可以通过通过指针的变化来指向不同的内存地址, 可以通过指针来获取存在相应内存地址中的值 ( 通过*, 或者[] ).
这是非常需要注意的一点是
地址包括位置编号(就是printf
出来那一段莫名其妙数字)和数据类型信息
A pointer is a variable whose value is the address of another variable, i.e., direct address of the memory location.
引入 * 与 & 操作符 (Operator)
指针中特别又最关键的两个操作符就是* 获取指针所指的变量的值
和& 获取变量所在的地址
, 明白了这两个操作符的作用指针就入了点门了. ( 对指针变量本身只能使用*
而不能使用&
, 因为指针本身就是地址)
需要注意的是*
、&
与++ --
一样都是单目操作符, 说得简单点