C++ 指针基础】的更多相关文章

内存概述 内存 内存含义: 存储器:计算机的组成中,用来存储程序和数据,辅助CPU进行运算处理的重要部分. 内存:内部存贮器,暂存程序/数据--掉电丢失 SRAM.DRAM.DDR.DDR2.DDR3. 外存:外部存储器,长时间保存程序/数据-掉电不丢ROM.ERRROM.FLASH(NAND.NOR).硬盘.光盘. 内存是沟通CPU与硬盘的桥梁: 暂存放CPU中的运算数据 暂存与硬盘等外部存储器交换的数据 物理存储器和存储地址空间 有关内存的两个概念:物理存储器和存储地址空间. 物理存储器:实…
本文写的非常详细,因为我想为初学者建立一个意识模型,来帮助他们理解函数指针的语法和基础.如果你不讨厌事无巨细,请尽情阅读吧. 函数指针虽然在语法上让人有些迷惑,但不失为一种有趣而强大的工具.本文将从C语言函数指针的基础开始介绍,再结合一些简单的用法和关于函数名称和地址的趣闻.在最后,本文给出一种简单的方式来看待函数指针,让你对其用法有一个更清晰的理解. 函数指针和一个简单的函数 我们从一个非常简单的”Hello World“函数入手,来见识一下怎样创建一个函数指针. 1 2 3 4 5 6 7…
一.使用sizeof计算数组长度 1.1 sizeof的基本使用 如果在作用域内,变量以数组形式声明,则可以使用sizeof求数组大小,下面一段代码展示了如何使用sizeof: ,,,,,}; int i; // sizeof(nums) 计算nums数组的总字节数 // sizeof(int) 计算int类型所占用的字节数 int length = sizeof(nums)/sizeof(int); ;i<length;i++) { printf("%d ",nums[i]);…
一.不能动的“地址”—void指针 1.1 void指针初探 void *表示一个“不知道类型”的指针,也就不知道从这个指针地址开始多少字节为一个数据.和用int表示指针异曲同工,只是更明确是“指针”. 因此void*只能表示一个地址,不能用来&取值,也不能++--移动指针,因此不知道多少字节是一个数据单位. ,,,,}; void* ptr1 = nums; //int i = *ptr1; // 对于void指针没法直接取值 int* ptr2 = (int*)nums; printf(&qu…
1.指针优势,当数据量比较大时,通过指针直接访问数据量所在内存.处理更 加复杂的数据结构.例如:链表.二叉树.图等.2.指针本质是一种表示内存地址的数据类型,它和整型int和浮点数float一样 只是指针表示是内存地址.3.c++中两种途径可以访问内存. i:通过变量名间接访问.为了保存数据,通常先定义保存数据的变量,在 通过变量名间接访问在内存中的数据,进行读写. ii:另一种就是直接通过内存地址,也就是通过指针来访问内存中的数据.4.语法格式:数据类型* 变量名; 其中,“数据类型”表示指针…
先搞清楚 ++a 和 a++的区别 ++a : 前缀++,  先自增,后表达式 a++ : 后缀++,  先表达式,后自增 前缀,自增立即生效. 后缀,下次才会看到效果. 一维数组的指针 Action(){ ]={,,,}; int *p=score; int i; ;i<=;i++) lr_output_message("kkk=%d",*p++); ; } *p++: 指针取值,并向后移一位 *(p++): 很蛋疼的理解. ++ 是后缀,前后缀的威力最大,因此同*p++ .…
=================this指针的由来==================== 一个学生可以有多本书一样,而这些书都是属于这个同学的:同理,如果有很多个同学在一起,那么为了确定他们的书不要拿混淆了,最好的办法我想应该就是每个同学都在自己的书上写上名字,这样肯定就不会拿错了. 同理,一个对象的多个成员就可看作是这个对象所拥有的书:而在很多个对象中间,我们为了证明某个成员是自己的成员,而不是其他对象的成员,我们同样需要给这些成员取上名字.在C++中,我们利用this指针帮助对象做到这一…
#include <iostream> #include <string> using namespace std; int main() { "; "; "; char **c=&a; cout<<static_cast<const void *>(a) <<endl<<static_cast<const void *>(*c)<<endl; //cout<<…
新手在C语言的学习过程中遇到的最头疼的知识点应该就是指针了,指针在C语言中有非常大的用处.下面我就带着问题来写下我对于指针的一些理解. 指针是什么?  指针本身是一个变量,它存储的是数据在内存中的地址而不是数据本身的值.它的定义如下: ,*p; p=&a ; int *p=&a; 首先我们可以理解 int* 这个是要定义一个指针p,然后因为这个指针存储的是地址所以要对a取地址(&)将值赋给指针p,也就是说这个指针p指向a. 很多新手都会对这两种定义方法感到迷惑,其实他俩的意思是一样…
下面看看如何在函数中运用指针吧 下面是往函数传入指针的简单操作,不是传入数组的.判断一个a是否大于b是的话给,是的话对其进行操作,不是的话就直接返回. #include <stdio.h> int main(){ int num1,num2,*p1,*p2; p1 = &num1,p2=&num2; scanf("%d%d",&num1,&num2); int fun(int *n1,int *n2); //我们在声明函数时候,要定义好“指针…