黑马程序员——C语言笔记之指针
来源:互联网 发布:淘宝网天天特价女棉衣 编辑:程序博客网 时间:2024/04/25 18:12
一.指针
1.指针就是指向的地址
2.指针变量:用来存放地址的变量
3.指针变量的定义:
数据类型 * 指针变量名
例:int * p; 1) 定义了一个指针变量,变量名是p
2) int表示,p只能存放一个int类型的变量地址
4.指针变量定义的注意事项:
1)“*”必须得有
2)指针变量不能用来存放数值和字符
3)指针变量有全局和局部之分
5.初始化
1) 定义的同时初始化
完全初始化
例 :int *p= &a;用a的地址进行初始化,p指向了a
部分初始化
例:int *p1=&b, *p2; p1和p2都指向了b
p2= &b;
2)先定义后初始化
例:int *p3;
p3=null;
6.注意事项:
1)“*” 用法:用于定义指针变量指向地址
取出指向地址里面的值
2)指针变量作用:获取指针变量指向空间的内容
获取指针变量值所对应的存储单元
3)指针变量必须要初始化,如果不初始化,指针变量里存放的是垃圾值和系统程序的地址,会造成系统崩溃,这时的指针变量也就是野指针
二.数组指针
1.指向数组元素的指针就是数组指针
2.使用数组指针间接访问数组元素
3.数组指针的定义
例:int *p;
4.数组指针初始化:
int a[4]={1,2,3,4}
int *p=a;数组指针,定义了一个指针变量p赋值数组首地址
int *p=&a[0]; p指向数组的第一个元素的值
三.指针数组
1.存放指针的数组就是指针数组
2.指针数组的定义
数据类型*数组名[数组长度]
例:int *p1[4]; 定义了一个指针数组,数组名为p1,可以存放3个int类型变量指针
3两个指针之间减法运算
1)两个指针都指向同一个数组
判断两个指针变量指向的元素地址是否是连续的
判断两个指针变量之间相隔几个元素
注意:两个指针变量之间没有加法运算
2)俩个指针变量之间的关系运算
例:p1>p
结果是1则表示p1在高位
结果是0则表示p在高位或者他们指向同一个地址
四.二维数组指针
1.行指针,用来指向二维数组的每一行,存放的是行的首地址
2.二维数组定义:数据类型 (*行指针变量名)[数组第二维长度]
3.二维数组指针初始化:
例:int a [2] [3];
int (*p) [3]=a;
五.字符串指针
1.字符串指针定义:char *字符串指针变量名=“字符串内容”
2.注意:1)指针变量都是占用8个字节
2)指针变量可以重新指向另一字符串,并保存新的字符串的首地址
3)字符串是在常量区存储,常量区存储的数据只能读,不能修改
六.二维字符数组
1.用二维数组来保存多个字符串注意:
1)第一维存的是每个字符串的首地址
2)每个字符串的长度不能超多第二维的长度
2.char型指针数组和字符数组的区别:
1)char型指针指向可以改变
例:char *ss=“abcd”;
ss是一个指针变量,指向时可以变的
ss= “hello”
2)字符数组:
例:char s1[ ]={''abc"};
s1是一个常量,不能被赋值,所以s1=“hello”是错误的写法
七.内存分区
1.malloc动态内存分配
格式:void *malloc(unsigned size);
从内存堆区分配大小为size个字节的连续内存空间,如果内存分配成功,放回内存的地址,失败则返回Null
2.calloc分配指定块数和长度的内存空间
格式:calloc(块数,长度)
callo可以自动初始化为0
3.realloc扩充已经存在的空间的大小
格式在:realloc(已存在的空间,块数)
八.指针函数和函数指针
1.指针函数就是返回值是指针的函数
格式:指针类型*函数名( ){
return 地址
}
2.函数指针就是指向函数的指针变量,即本质是一个函数指针变量
函数指针变量是存放函数首地址的指针变量
定义:返回值类型(*变量名)(函数的参数);
定义函数指针的时候也可以不用写参数
- 黑马程序员——C语言笔记之指针
- 黑马程序员——C语言笔记之指针
- 黑马程序员—C语言笔记—指针
- 黑马程序员——ios学习笔记 C语言 指针
- 黑马程序员——IOS学习笔记(C语言指针)
- 黑马程序员——C语言学习笔记05 指针
- 黑马程序员——11-C语言补充之指针
- 黑马程序员——C语言之字符串指针
- 黑马程序员——c语言基础之指针
- 【黑马程序员】C语言学习笔记之指针(十一)
- 黑马程序员------c语言学习笔记之指针
- 黑马程序员---C 语言学习笔记之指针
- 黑马程序员——C语言指针
- 黑马程序员—C语言—指针
- 黑马程序员——C语言指针
- 黑马程序员——C语言指针
- 黑马程序员——C语言指针
- 黑马程序员——C语言指针
- session原理解析
- web前端开发的点点滴滴---2.HTML的DOCTYPE
- 关于现代CPU,程序员应当更新的知识
- APP中数据加载的6种方式
- Ubuntu下编译C/C++文件
- 黑马程序员——C语言笔记之指针
- Android命令
- MD5处理的字节流注意事项
- 最短路径—Dijkstra算法和Floyd算法
- UVA - 11134 Fabled Rooks
- 格雷码递归求解(2016腾讯笔试)
- 深入理解C++枚举类型enum
- 指针的大小到底是由谁决定?是多少?
- 4-LTE Identification III: EPS Session/Bearer Identifiers