C++基础教程(五)——指针(2)

简介: //=====================================================// Name : Pointer1.
//=====================================================
// Name        : Pointer1.cpp
// Author      : lf
// Version     : 《C++语言基础教程》 吕凤翥 P38——P43 2.5.2
// Description : 指针和数组
// Tips        :
// 在C++中,数组的元素可以用下标表示,也可以用指针表示.
// 但是最好是用指针表示,因为指针表示要比下标表示处理起来要快.
// 所以在C++中尽量使用指针来引用数组元素
//=====================================================

#include <iostream>
using namespace std;

int main() {
	cout<<"<----数组元素的指针表示---->"<<endl;
	int a[5]={3,4,5,6,7};
	//一维数组元素下标表示方法
	//a[i],其中i=0,1,2,3,4
	//一维数组元素指针表示法
	//*(a+i),其中i=0,1,2,3,4
	int number1=*(a+2);
	cout<<"number1="<<number1<<endl;
	cout<<"--------------------------"<<endl;

	//二维数组元素下标表示方法
    //b[i][j],其中i=0,1;j=0,1,2,3,4
	//二维数组元素指针表示法
	//*(*(b+i)+j),其中i=0,1;j=0,1,2,3,4
	int b[2][5]={{1,2,3,4,5},{6,7,8,9,0}};
	int number2=*(*(b+1)+1);
	cout<<"number2="<<number2<<endl;

	//将二维数组元素的行用下标表示,列用指针表示的形式:
	//*(b[i]+j)
    int number3=*(b[1]+1);
    cout<<"number3="<<number3<<endl;

    //将二维数组元素的列用下标表示,行用指针表示的形式:
    //(*(b+i))[j]
    int number4=(*(b+1))[2];
    cout<<"number4="<<number4<<endl;

    //按二维数组各个元素在内存的存放的顺序,用指向数组首元素的一级指针的表示形式:
    //*(&b[0][0]+5*i+j)
    int number5=*(&b[0][0]+5*1+3);
    cout<<"number5="<<number5<<endl;
    cout<<"--------------------------"<<endl;

    static int f[5]={5,4,3,2,1};
    int i,j;
    i=f[0]+f[4];
    j=*(f+2)+*(f+4);
    cout<<"i="<<i<<",j="<<j<<endl;
    cout<<"--------------------------"<<endl;

    static char s1[]="abcde";
    static char s2[5]={'m','n','p','q','\0'};
    char *ps=s1;
    //输出一个字符串时,可使用字符数组名或指向该字符串首地址的指针名
    cout<<"s1="<<s1<<",s2="<<s2<<endl;
    //注意这里的*ps+2,*ps指向的是字符a所以在执行*ps+2会把字符转换为整型即字符a对于的ASCII码97,所以结果为99
    cout<<"*ps="<<*ps<<",*(ps+2)="<<*(ps+2)<<",*(ps+4)="<<*(ps+4)<<",*ps+2="<<*ps+2<<endl;
    //同理
    char charc='c';
    cout<<"charc+2="<<charc+2<<endl;
    cout<<"--------------------------"<<endl;

    static int e[][3]={{1,2,3},{4},{5,6}};
    e[0][2]=7;
    e[1][2]=8;
    //形成数组:
    // 1 2 7
    // 4 0 8
    // 5 6 0
    // 指针分析:
    // *e指向了数组e的第一个元素{1,2,3},所以**e指向了{1,2,3}的第一个元素为1
    // *(e+1)指向了数组e的第二个元素{4,0,8},所以**(e+1)指向了{4,0,8}的第一个元素为4
    // *(e+1)指向了数组e的第二个元素{4,0,8},所以*(*(e+1)+2)指向了{4,0,8}的第三元素为8
    cout<<"**e="<<**e<<",**(e+1)="<<**(e+1)<<",*(*(e+1)+2)="<<*(*(e+1)+2)<<endl;

    cout<<"e[0][2]="<<e[0][2]<<",e[1][2]="<<e[1][2]<<",e[2][2]="<<e[2][2]<<endl;
	return 0;
}

相关文章
|
4月前
|
缓存 安全 编译器
C++面试周刊(3):面试不慌,这样回答指针与引用,青铜秒变王者
《C++面试冲刺周刊》第三期聚焦指针与引用的区别,从青铜到王者级别面试回答解析,助你21天系统备战,直击高频考点,提升实战能力,轻松应对大厂C++面试。
479 132
C++面试周刊(3):面试不慌,这样回答指针与引用,青铜秒变王者
|
4月前
|
存储 C++
C++语言中指针变量int和取值操作ptr详细说明。
总结起来,在 C++ 中正确理解和运用 int 类型地址及其相关取值、设定等操纵至关重要且基础性强:定义 int 类型 pointer 需加星号;初始化 pointer 需配合 & 取址;读写 pointer 执向之处需配合 * 解引用操纵进行。
461 12
|
9月前
|
IDE 编译器 项目管理
Dev-C++保姆级安装教程:Win10/Win11环境配置+避坑指南(附下载验证)
Dev-C++ 是一款专为 Windows 系统设计的轻量级 C/C++ 集成开发环境(IDE),内置 MinGW 编译器与调试器,支持代码高亮、项目管理等功能。4.9.9 版本作为经典稳定版,适合初学者和教学使用。本文详细介绍其安装流程、配置方法、功能验证及常见问题解决,同时提供进阶技巧和扩展学习资源,帮助用户快速上手并高效开发。
|
存储 程序员 C++
深入解析C++中的函数指针与`typedef`的妙用
本文深入解析了C++中的函数指针及其与`typedef`的结合使用。通过图示和代码示例,详细介绍了函数指针的基本概念、声明和使用方法,并展示了如何利用`typedef`简化复杂的函数指针声明,提升代码的可读性和可维护性。
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
651 4
|
存储 安全 编译器
在 C++中,引用和指针的区别
在C++中,引用和指针都是用于间接访问对象的工具,但它们有显著区别。引用是对象的别名,必须在定义时初始化且不可重新绑定;指针是一个变量,可以指向不同对象,也可为空。引用更安全,指针更灵活。
|
算法 数据挖掘 Shell
「毅硕|生信教程」 micromamba:mamba的C++实现,超越conda
还在为生信软件的安装配置而烦恼?micromamba(micromamba是mamba包管理器的小型版本,采用C++实现,具有mamba的核心功能,且体积更小,可以脱离conda独立运行,更易于部署)帮你解决!
564 1
|
存储 C++
c++的指针完整教程
本文提供了一个全面的C++指针教程,包括指针的声明与初始化、访问指针指向的值、指针运算、指针与函数的关系、动态内存分配,以及不同类型指针(如一级指针、二级指针、整型指针、字符指针、数组指针、函数指针、成员指针、void指针)的介绍,还提到了不同位数机器上指针大小的差异。
484 1
|
存储 C语言
C语言如何使用结构体和指针来操作动态分配的内存
在C语言中,通过定义结构体并使用指向该结构体的指针,可以对动态分配的内存进行操作。首先利用 `malloc` 或 `calloc` 分配内存,然后通过指针访问和修改结构体成员,最后用 `free` 释放内存,实现资源的有效管理。
1201 13
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
524 4