15 指针
来源:互联网 发布:探险者协会淘宝 编辑:程序博客网 时间:2024/05/16 02:01
指针的重要性:
表示一些复杂的数据结构
快速的传递数据,减少了内存的耗用
使函数返回一个以上的值
能够直接访问硬件
能够方便的处理字符串
是理解面向对象语言中引用的基础
总结:指针是C语言的灵魂
指针的定义:
地址:
内存单元的编号
从零开始的非负整数
范围:4G【0——4G-1】
指针:
指针就是地址,地址就是指针
地址就是内存单元的编号
指针变量是存放地址的变量
指针和指针变量是两个不同的概念
但是要注意,通常我们叙述是会把指针变量简称为指针,实际他们含义并不一样
指针的分类:
① 基本类型指针:
见《14 指针热身》
例子:#include <stdio.h>
int main (void)
{
int i = 5;
int * p;
int * q;
p = & i;
// *q = p; // error,语法编译会出错
// *q = *p; // error
p = q; // q是垃圾值,q赋给p,p也变成垃圾值
printf( " %d\n " , * q );
/ *
q的空间是属于本程序的,所以本程序可以读写q的内容,
但是如果q内部是垃圾值,则本程序不能读写 * q 的内容,
因为此时 * q 所代表的内存单元的控制权限并没有分配给本程序,
所以本程序运行到 printf这一行就会立即出错
* /
return 0;
}
互换两个整数:
#include <stdio.h>
void huhuan( int * p, int * q )
{
int t;
t = * p;
* p = * q;
* q = t;
}
int main(void)
{
int a = 3;
int b = 5;
huhuan(&a,&b)
printf ( " a = %d, b = %d\n " , a , b )
return 0;
}
星号 * 的用法:
1.乘法
2.定义指针变量
int * p;
// 定义了一个名字叫p的变量,int * 表示p只能存放int变量的地址
3.指针运算符
该运算符表示放在已经定义好的指针变量的前面
如果p是一个已经定义好的指针变量
则 * p 表示 以p的内容为地址的变量
如何通过被调函数修改主调函数普通变量的值:
1. 实参必须为该普通变量的地址
2.形参必须为指针变量
3.在呗调函数中通过
* 形参名 = ............
可以修改主调函数相关变量的值
使函数返回一个以上的值,例子:
# include<stdio.h>
void f (int * p,int * q)
{
* p = 1;
* q = 2;
}
int main (void)
{
int a = 3;
int b = 5;n
f ( &a,&b )
printf ( "a = %d,b = %d\", a,b );
return 0;
}
// 其结果为a = 1,b = 2
②指针与数组
指针和一维数组
一维数组名:
一维数组名是个指针常量
它存放的是一维数组第一个元素的地址
如 {
int a [ 5 ] ;
int b [ 5 ] ;
a = b ;// error,a是常量
........
}
补充: int ——%d
long int—— %ld
float——%f
double——%lf
char——%c
下标和指针的关系:
如果p是个指针变量
则 p[ i ] 永远等价于 * ( p + i )
确定一个一维数组需要几个参数【如果一个函数要处理一个一维数组,则需要接收该数组的哪些信息】:
需要两个参数:
数组第一个元素的地址
数组的长度
指针变量的运算:
指针变量不能相加,不能相乘,也不能相除
如果两个指针变量指向的是同一块连续空间中的不同存储单元,则这两个指针变量才可以相减。
指针和二维数组
③指针与函数
④指针与结构体:见17
⑤多级指针:见16
- 15 指针
- C指针原理(15)-C指针基础
- 15周(指针分布)
- 15周(指针分布)
- 15,高级指针
- 15、指针的运算
- 指针练习-15
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- TI红外测温传感器TMP006
- C#Graphics类绘制直线与拖动
- 那年你還好嗎
- YUV格式分析详解
- HTML
- 15 指针
- mongoDB 各类索引相关命令总结
- <LeetCode> 题166:链表倒数第n个结点
- jeesite集成plupload上传组件
- R第四问 Linux Oracle客户端安装 ROracle安装
- Spring mvc
- C# 重写空间 Onpaint事件
- IOS邪术之 杀不死的后台&监听进程
- Struts 2的工作流程