IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 指针 -> 正文阅读

[C++知识库]指针

目录 : 1.什么是指针

? ? ? ? ??2.指针类型以及不同指针类型会产生什么误差

? ? ? ? ? 3.野指针

? ? ? ? ? 4.指针运算

? ? ? ? ? 5.指针和数组

? ? ? ? ? 6.二级指针

? ? ? ? ? 7.指针数组

前言:指针作为C语言最重要的一个知识点,希望将它理解并且运用到代码中.


1 .指针的概念 :书上过于专业化? ?----通俗理解为指针就是地址.? 指针变量就是存放地址的变量.

指针在32平台上是占4B(字节)? ,? ?在64平台上占位8B(字节) .

eg : int *p=&a;? //&表示取地址符? ,取出为一个地址? .所以指针可以想象成是地址.

2.指针类型 : 决定了进行解引用操作能够访问空间的大小.

eg : int *p ==>访问4个B

? ? ? ?char *p ==>访问1个B

? ? ? ?double *p ==>访问8个B

指针类型决定了指针走一步走多远(指针步长).

eg : int *p+1 ==>向右移动4B.

3.野指针 : 指向的位置不可知,指向空间是非法的.

野指针有以下情况?: (1).指针未初始化,这样导致指针存放随机值.? int *p;//未初始化

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (2).指针访问越界,在数组中? int a[5],? int *p=&a[5]; // 越界

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (3).指针指向内存空间已经被释放了.? 当函数被调用后,局部变量就被释放.

4.指针运算 : (1).指针+-整数

? ? ? ? ? ? ? ? ? ? ?(2).指针-指针

? 1.指针+-整数:

#include<stdio.h>

#define PI 5

int main()
{
    float value[PI];
    float *p;
    for(p=&value[0];p<&value[PI];)
   {
        *p++=0;  //指针++
   }
    return 0;
}

2.指针-指针: 是指针与指针之间的元素值,并不是数组哦!!

#include<stdio.h>

int main()
{
    int arr[9]={1,2,3,4,5,6,7,8,9};
    char a[5]={0};   //其中其他数值默认为0;

    printf("%d\n",&arr[8]-&arr[0]);   //求出中间元素的个数
    printf("%d\n",&arr[5]-&a[0]);  //error 因为只能在同一个内存空间中才可以减,同一个数组中
  
    return 0;
}

5.指针和数组 :?

eg :? ?int arr[10];

arr--数组名为首元素地址;

&arr---取出整个数组的地址;

sizeof(arr)---计算整个数组大小;

&arr+1---跳过一个整数组.

#include<stdio.h>

int main()
{
    int arr[10]={1,2,3,4,5,6,7,8,9,0};
    int *p=arr;  //数组的首地址
    int sz=sizeof(arr); //整个数组大小
    for(int i=0;i<sz;i++)
   {
        printf("%d\n",*(p+i));  //*(p+i)进行解引用操作
    }
    return 0;
}

6.二级指针 :?

int *p=&a;///表示一级指针;

int **pp1=&p; //表示二级指针;以此类推还有三级指针,n级指针.?

7.指针数组 : 重点在数组,表示存放指针的数组.

#include<stdio.h>

int main()
{
    int a=1;
    int b=2;
    int c=3;
    
    int *arr[3]={&a,&b,&c};  //指针数组 ,存放指针(地址)
    return 0;
}

eg : int *arr[3]={&a,&b,&c}

数组指针---则表示指针;

类推为? 整型数组,字符型数组.

? ? ? ?

--坚持IT工作者!!!

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-07-21 21:19:47  更:2022-07-21 21:21:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/10 2:58:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码