文章目录
文档视频讲解链接地址
- 腾讯课堂链接 : 50_指针_指针的理解
6.1 指针理解
指针的优点
- 使程序简洁、紧凑、高效
- 有效地表示复杂的数据结构
- 动态分配内存
- 得到多于一个的函数返回值
指针的理解 :
- 在计算机内部存储器(简称内存)中,每一个字节单元,都有一个编号,称为地址。
- 在C语言中,内存单元的地址称为指针,专门用来存放地址的变量,称为地址变量又叫指针变量(pointer variable)。
- 在不影响理解的情况中,有时对地址、指针和指针变量不区分,通称指针
指针的概念
- 一个地址对应一个字节
- 一个变量会占用多个字节, 每一个字节占用一个地址, 因此一个变量会占用多个地址, 所谓的变量的地址是变量的起始地址 。
& 与 *运算符
- &含义: 取变量的地址
- 单目运算符 优先级: 2 结合性:自右向左
- *含义: 取指针变量保存地址中的内容 , 还可以理解为 取地址中的值
- 单目运算符 优先级: 2 结合性:自右向左
- 两者关系:互为逆运算
- &含义: 取变量的地址
指针变量与变量
直接访问与间接访问
- 直接访问:按变量地址存取变量值
- 间接访问:通过存放变量地址的变量去访问变量
实例71
分别输出char , short ,int , long , float , double 类型的变量地址。- 源文件
01-cbase\71-pointer1.c
- 源代码
#include <stdio.h> int main(int argc, char const *argv[]) { char a = 10 ; short b = 10 ; int c = 10 ; long d = 10 ; float e = 10.1 ; double f = 10.1 ; printf("&a = %p\n",&a); printf("&b = %p\n",&b); printf("&c = %p\n",&c); printf("&d = %p\n",&d); printf("&e = %p\n",&e); printf("&f = %p\n",&f); char str[10] = {0} ; // 数组中成员的地址是连续的 for(int i=0;i<10;i++) { printf("&str[%d]=%p\n",i,&str[i]); } return 0; }
- 运行结果
&a = 000000000061FE1B &b = 000000000061FE18 &c = 000000000061FE14 &d = 000000000061FE10 &e = 000000000061FE0C &f = 000000000061FE00 &str[0]=000000000061FDF6 &str[1]=000000000061FDF7 &str[2]=000000000061FDF8 &str[3]=000000000061FDF9 &str[4]=000000000061FDFA &str[5]=000000000061FDFB &str[6]=000000000061FDFC &str[7]=000000000061FDFD &str[8]=000000000061FDFE &str[9]=000000000061FDFF
本文含有隐藏内容,请 开通VIP 后查看