C/C++指针从0到99(详解)

简介: C/C++指针从0到99(详解)



一,指针的基础理解

      在电脑中所有的数据都会被存储,我们大多数时候只需要一部分数据,那我们如何准确找到那些数据呢,这个时候就需要一些编号来找到数据,像我们身份证上的编号一样,在计算机中每个字节都有自己的编号,而指针是用来存储这些地址编号的。

二,指针的基本使用

     一级指针的结构是:(类型 ) + (* )+(名称),例如:int * pa;这个就是一个int 类型的一级指针,对其解引用可以获得指针指向空间里面的内容,二级指针则是存储一级指针的地址,例如:int * *paa =&pa;对其解引用一次可以获得一级指针的指向的内容,在解引用一次可以获得一级指针指向的内容,以此类推可以理解三级,四级指针。

三,为什么要用指针

    首先指针最广泛的用法是在函数传参的时候,众所周知,一遍数据类型在传参数时,大部分是拷贝,函数中的改变无法影响其他函数中的实参,而因为指针和其他的不一样,指针是直至本质(地址),只要将实参的地址传过去,通过形参的指针找到地址进行,操作可以避免因为拷贝导致的无法改变问题。其次,指针能对数据进行更加精准的操作,能够进行通过强制转化进行字节上的操作。指针也能简化大量的代码量,这些优点在我们日后进行使用时感觉到的。还有很多优点我就不一一列举了,大家有兴趣可以网上找资料。

四,指针与数组的联系

       数组和指针的联系可谓是千丝万缕,数组的实质就是指针,数组的名称就是第一个元素的地址,指针也能用   [ ] 这种数组的形式表示,数组也能用指针  *(arr+i)的形式表示。接下来我展示一些数组和指针的转化和对应关系

int *arr              =               int arr[ ]

int (*p)[   ]         =              int  arr[ ] [ ]

五,指针的拓展使用

1)指针数组

结构:int *p[ ]

指针数组的实质还是一个数组,它的用途可以用来存储指针,方便使用,例如

int *pa=NULL;
int *pb=NULL;
int *pc=NULL;
int *arr[]={pa,pb,pc};
2)数组指针

结构:int (*p)[ ]

数组指针的本质则是一个指针,看起来结构和指针数组相同,但是不要忘记【 】和  *  优先级不同,数组指针的  p  是先与【】结合的,而指针数组是先与  *  结合的。指针数组可以存储二维数组等多位数组的地址,并且很方便的拿出,例如:

3)函数指针·

结构:返回类型  (*p)  (参数 1,参数 2);

实例:int (*add)(int a,int b)  =add ;(add代表加法函数,函数名就是函数的地址)

函数指针 有什么用呢,函数指针能简化很多代码量,让程序变得更加健壮,你可以思考,用一个函数指针模板只要返回值和参数相同就可以适应功能不同的函数,大量减少重复代码。

六,sizeof 和stelen 的补充

说先要认识到sizeof 和 strlen 的差别,sizeof 是只看()里面的类型,不会进入内存计算,如  int,数组则是 int [  10]。而 strlen 则是进入给的地址内存,找到"\0",如何统计字节数。

如果sizeof()里面的是指针,则结果是4||8,因为编译环境不同,指针大小不同,而strlen 里面只能放地址,别人可能会非法访问

相关文章
|
10天前
|
存储 程序员 C++
深入解析C++中的函数指针与`typedef`的妙用
本文深入解析了C++中的函数指针及其与`typedef`的结合使用。通过图示和代码示例,详细介绍了函数指针的基本概念、声明和使用方法,并展示了如何利用`typedef`简化复杂的函数指针声明,提升代码的可读性和可维护性。
39 0
|
1月前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
111 4
|
2月前
|
存储 安全 编译器
在 C++中,引用和指针的区别
在C++中,引用和指针都是用于间接访问对象的工具,但它们有显著区别。引用是对象的别名,必须在定义时初始化且不可重新绑定;指针是一个变量,可以指向不同对象,也可为空。引用更安全,指针更灵活。
|
2月前
|
存储 C++
c++的指针完整教程
本文提供了一个全面的C++指针教程,包括指针的声明与初始化、访问指针指向的值、指针运算、指针与函数的关系、动态内存分配,以及不同类型指针(如一级指针、二级指针、整型指针、字符指针、数组指针、函数指针、成员指针、void指针)的介绍,还提到了不同位数机器上指针大小的差异。
65 1
|
2月前
|
存储 编译器 C语言
C++入门2——类与对象1(类的定义和this指针)
C++入门2——类与对象1(类的定义和this指针)
51 2
|
2月前
|
存储 安全 编译器
【C++】C++特性揭秘:引用与内联函数 | auto关键字与for循环 | 指针空值(一)
【C++】C++特性揭秘:引用与内联函数 | auto关键字与for循环 | 指针空值
|
2月前
|
存储 C++ 索引
C++函数指针详解
【10月更文挑战第3天】本文介绍了C++中的函数指针概念、定义与应用。函数指针是一种指向函数的特殊指针,其类型取决于函数的返回值与参数类型。定义函数指针需指定返回类型和参数列表,如 `int (*funcPtr)(int, int);`。通过赋值函数名给指针,即可调用该函数,支持两种调用格式:`(*funcPtr)(参数)` 和 `funcPtr(参数)`。函数指针还可作为参数传递给其他函数,增强程序灵活性。此外,也可创建函数指针数组,存储多个函数指针。
|
3月前
|
编译器 C++
【C++核心】指针和引用案例详解
这篇文章详细讲解了C++中指针和引用的概念、使用场景和操作技巧,包括指针的定义、指针与数组、指针与函数的关系,以及引用的基本使用、注意事项和作为函数参数和返回值的用法。
57 3
|
2月前
|
算法 C++
【算法】双指针+二分(C/C++
【算法】双指针+二分(C/C++
|
2月前
|
存储 编译器 程序员
【C++】C++特性揭秘:引用与内联函数 | auto关键字与for循环 | 指针空值(二)
【C++】C++特性揭秘:引用与内联函数 | auto关键字与for循环 | 指针空值