<<征服C指针>>学习笔记
2017-09-09 11:32
204 查看
1.什么是指针?
在C语言标准中最初出现”指针”一词的部分,有这样一段话:
{
指针类型可由函数类型\对象类型\或不完全的类型派生,派生指针类型的类型称为引用类型.
指针类型描述一个对象,该类对象的值提供对该引用类型实体的引用.
由引用类型T派生的指针类型有时称为”(指向)T的指针”.
从引用类型构造指针类型的过程称为”指针类型的派生”.这些构造派生类型的方法可以递归的应用.
}
提及”类型”,我们首先想到的是”int类型”\”double类型”……同样,C中也存在”指针类型”这样的类型.
“指针类型”:
{
并不单独存在,它是由其他类型派生而成的.即实际上存在的类型是”指向int的指针类型”\”指向double的指针类型”….
也存在”指针类型变量”和”指针类型的值”.
}
2.首次接触指针.
以实际代码输出指针的值.
要点:
{
对变量使用&运算符,可取得该变量的地址.这个地址称为指向该变量的指针.
指针变量hoge_p = &hoge 时,称 hoge_p指向hoge.
对指针变量运用*运算符,等同于它指向的变量.如果hoge_p指向hoge,*hoge_p == hoge.
}
3.指针声明.
常见的C的声明像:
int hoge;
使用”类型 变量名”的形式.
而”指向int的指针”类型的变量,常采用这样的声明方法:
int *hoge_p;
这里,int* 是类型(指向int的指针类型),hoge_p为变量名,
而
int* hoge_p;
这种书写方式虽符合”类型 变量名”的形式,但在同时声明多个变量的情况时会出现歧义,
int* hoge_p, piyo_p;
//声明两个”指向int的指针”? ——并不是.
在C语言标准中最初出现”指针”一词的部分,有这样一段话:
{
指针类型可由函数类型\对象类型\或不完全的类型派生,派生指针类型的类型称为引用类型.
指针类型描述一个对象,该类对象的值提供对该引用类型实体的引用.
由引用类型T派生的指针类型有时称为”(指向)T的指针”.
从引用类型构造指针类型的过程称为”指针类型的派生”.这些构造派生类型的方法可以递归的应用.
}
提及”类型”,我们首先想到的是”int类型”\”double类型”……同样,C中也存在”指针类型”这样的类型.
“指针类型”:
{
并不单独存在,它是由其他类型派生而成的.即实际上存在的类型是”指向int的指针类型”\”指向double的指针类型”….
也存在”指针类型变量”和”指针类型的值”.
}
2.首次接触指针.
以实际代码输出指针的值.
#include <stdio.h> int main(void) { int hoge = 5; int piyo = 10; int *hoge_p; //输出每个变量的地址 printf("&hoge: %p\n", &hoge); printf("&piyo: %p\n", &piyo); printf("&hoge_p: %p\n", &hoge_p); //将hoge的地址赋予hoge_p hoge_p = &hoge; //至此,我们认为"hoge_p指向hoge" printf("hoge_p: %p\n", hoge_p); //通过hoge_p输出hoge的内容 printf("*hoge_p: %d\n", *hoge_p); //通过hoge_p修改hoge的内容 *hoge_p = 10; printf("hoge: %d\n", hoge); return 0; }
要点:
{
对变量使用&运算符,可取得该变量的地址.这个地址称为指向该变量的指针.
指针变量hoge_p = &hoge 时,称 hoge_p指向hoge.
对指针变量运用*运算符,等同于它指向的变量.如果hoge_p指向hoge,*hoge_p == hoge.
}
3.指针声明.
常见的C的声明像:
int hoge;
使用”类型 变量名”的形式.
而”指向int的指针”类型的变量,常采用这样的声明方法:
int *hoge_p;
这里,int* 是类型(指向int的指针类型),hoge_p为变量名,
而
int* hoge_p;
这种书写方式虽符合”类型 变量名”的形式,但在同时声明多个变量的情况时会出现歧义,
int* hoge_p, piyo_p;
//声明两个”指向int的指针”? ——并不是.
相关文章推荐
- OpenCV学习笔记(15)Opencv之<Vec3b>
- java 从零开始,学习笔记之基础入门<JDBC>(二十四)
- C++学习笔记之对文件的操作<1>
- Accelerated C++学习笔记2—<使用字符串>
- <极客学院>视频教程学习笔记-iOS中CALayer的使用
- IOS cocos2d学习笔记-<八>游戏关卡(Objective-C文件读写)
- <<深入Java虚拟机>>-第二章-Java内存区域-学习笔记
- RT-Thread 学习笔记(十一)--- 开启基于RTGUI的LCD显示功能(1)<LCD驱动接口移植>
- [模式识别].(希腊)西奥多里蒂斯<第四版>笔记10之__监督学习:后记
- java 从零开始,学习笔记之基础入门<servlet_文件下载>(二十七)
- java学习笔记<十二>枚举类
- c++ standard library 学习笔记-auto_ptr<T> 注意事项
- <学习html>第三天笔记-链接标签;锚点定位、<base />标签;遇到标签之间关系的问题及解决方法
- Data Types in the Kernel <LDD3 学习笔记>
- <<Python基础教程>>学习笔记 | 第01章 | 基础知识
- CSS学习笔记之<!important>
- java 从零开始,学习笔记之基础入门<反射>(二十九)
- React-native学习笔记之<BackAndroid>
- power desinger 学习笔记<五>
- 【js学习笔记-114】----<canvas>矩形、颜色、透明度、渐变及图案