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语言指针 -> 正文阅读

[C++知识库]C语言指针

指针和指针变量的概念

  1. 内存地址──内存中存储单元的编号
    (1)计算机硬件系统的内存储器中,拥有大量的存储单元(容量为1字节)。
    为了方便管理,必须为每一个存储单元编号,这个编号就是存储单元的“地址”。每个存储单元都有一个惟一的地址。
  2. 变量地址──系统分配给变量的内存单元的起始地址
    注意:内存单元的地址与内存单元中的数据是两个完全不同的概念。
  3. 指针与指针变量
    (1)指针──即地址
    一个变量的地址称为该变量的指针。
    (2)指针变量──专门用于存储其它变量地址的变量
    指针与指针变量的区别,就是变量值与变量的区别。
  4. 指针变量的定义
    如:
int   i , j
        int  *pointer-1 , *pointer-2;
        pointer-1=&i;
        pointer-2=&j;

定义格式:类型 *指针变量名
说明:(1)用*表示定义的变量为指针变量
(2)指针变量的类型为指针变量指向的地址单元内值的类型。

  1. 指针变量的引用
main()
{int a=3,*p;
 p=&a;
 printf(“a=%d,*P=%d”,a,*p);
 printf(“a=%x,*p=%x”,&a,p);
}

在非定义语句中出现的*p表示指针变量P所存放的地址中的内容

指针与一维数组

  1. 概念
    数组的指针──数组在内存中的起始地址;
    数组元素的指针──数组元素在内存中的起始 地址。
  2. 指向数组的指针变量的定义
    与指向普通变量的指针变量的定义方法一样。
    例如:
int  array[10], *pointer;
  pointer=array (&array[0]);

注意:数组名代表数组在内存中的起始地址(与第1个元素的地址相同),所以可以用数组名给指针变量赋值。
3. 通过指针引用数组元素
如果有
“int array[10],pointer=array;则:
(1)pointer+i和array+i都是数组元素array[i]的地址。
(2)
(pointer+i)和*(array+i)就是数组元素array[i]。
例如,假设指针变量pointer的当前值为3000,则pointer+1为3000+1*4=3004,而不是3001。 pointer+1指向下一个数组元素地址

指针与二维数组

字符串的指针和指向字符串的指针变量

动态分配内存

  • 在<stdlib.h> 中定义了下面的函数
  • malloc( size);
    向系统申请大小为size的内存块,把首地址返回。如果申请不成功,返回NULL
  • free(* p);
    释放由malloc() 申请的内存块。p是指向此块的指针
#include  <stdlib.h>
main()
{int  *p ;
 p = (int *) malloc(4);    
scanf("%d",p);
printf("%d",*p);
free(p);                            
}

一般在写程序需要判断分配内存是否成功,使用如下程序语句:
if(p!=NULL)
……………………//需要执行的语句
else
……………//打印分配内存不成功出错信息

#include  <stdlib.h>
main()
{int  *p ;
 p = (int *) malloc(4);    
If(p!=null)
{scanf("%d",p);
printf("%d",*p);
free(p);}
else
printf(“没有申请到空间”)}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-04 12:40:48  更:2021-10-04 12:43:06 
 
开发: 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/19 21:21:41-

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