`
longhua2003
  • 浏览: 13840 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

C++指针(我所了解的)

阅读更多
不知何原因,最近老是静不下心来学习,也不知什么原因,突然之间,就很想学一下C/C++(我想:"在我很有兴趣去学习一个东西时候,这不是一件坏事吧",不过我还是以Java为主),因为很早之前,在我还没有接触过Java时,那时,我对选择学习Java还是C/C++有一个,有一个什么呢?就是学那个好,那时,Java相当的流行,而C/C++又比较难学,特别是C++中的指针,很多人说,相当的复杂,所以我最终选择自学Java.
   这两天,学了指针,感觉并不是像传说的触不可及(但是它确实有点挠,因为指针吗,经常对一个变量指来指去),我觉得,这要规功于我学习了Java,理解了面向对象的含义,如果你理解了什么是对象,如何运用,并了解了引用传递,我认为学习指针,不是难事(如果我说的不对,不要见笑),因为对象也是存在内存的地址中,而引用传递,始终是指向那个内存地址。

   上我的第一个C++程序(在这里要先感谢贺老师无私奉献的知识)
#include <iostream>
using namespace std;

int mainyw();
int main()
{
cout  << "指针运算 "  << endl;
int a, b;
int *pointer_1, *pointer_2;  //指向整形变量的指针变量
pointer_1 = &a;  //取a变量的地址
pointer_2 = &b;
*pointer_1 = 100;
*pointer_2 = 10;
cout << a << " " << b << endl;
cout << *pointer_1 << " " << *pointer_2 << endl;
        mainyw();
return 0;
}

int mainyw()
{
int a, b, *p1, *p2, *p;
cin >> a >> b;
p1 = &a;
p2 = &b;
if (a<b)
{
p = p1; p1 = p2; p2 = p;
}
cout << "a=" << a << " b=" << b << endl;
cout << "max=" << *p1 << " min=" << *p2 << endl;
return 0;
}

在mian方法中pointer_1 取了a变量的地址,然后,pointer_1指针赋值为100,这时pointer_1指向的地址就是a变量指向的地址,所以,
输出的结果a=100,b=10, pointer_1 =100,pointer_2 =10.



尽管ab没有再赋值,但数据发生变化,原因就地址的作用,所以如果a修改为90,指针变量pointer_1 也是90
#include <iostream>
using namespace std;

int main()
{
cout  << "指针运算 "  << endl;
int a, b;
int *pointer_1, *pointer_2;  //指向整形变量的指针变量
pointer_1 = &a;  //取a变量的地址
pointer_2 = &b;
*pointer_1 = 100;
*pointer_2 = 10;
cout << a << " " << b << endl;
cout << *pointer_1 << " " << *pointer_2 << endl;

cout  << "修改a变量 "  << endl;
a=90;
cout << a << " " << b << endl;
cout << *pointer_1 << " " << *pointer_2 << endl;
return 0;
}




我们知道,一个函数最多就是返回一个值(数,数组或集合,对象),而现在的myswap函数可以改变传入的两个数的内存地址,
把两个数的内存地址互换,就是a变成b,b变成a,这是不是相当于返回了多个数的效果呢?
#include <iostream>
using namespace std;

void myswap(int *p1, int *p2)
{
int t;
t=*p1;
*p1=*p2;  //这里把地址进行互换
*p2=t;
}
int main()
{
int *point1,*point2,a,b;
cout  << "输入两个数,比较大小 "  << endl;
cin>>a>>b;
cout<<"a="<<a<<",b="<<b<<endl;
point1=&a;
point2=&b;
if (a<b){
             myswap(point1, point2);
}
cout<<"a="<<a<<",b="<<b<<endl;
    cout<<*point1<<","<<*point2<<endl;
}




我最初输入的是2,5,a=2,b=5;myswap函数中把两个数的地址进行互换,这时,指针发生了变化,假如a的地址是x000xf,b的地址是x004xf,
point1 指针原来指向是地址x000xf,现在,是指向了x004xf,而point2指向了x000xf,相应的a.b的值也发生了变化,因为地址改变了,所以,指针传递给myswap的形参,就是引用传递。

可见,指针也是一种多少奇妙的事物,它会让你编程世界多一份意外的风景(如果你运用好的话)


  • 大小: 7 KB
  • 大小: 8.6 KB
  • 大小: 8.5 KB
分享到:
评论

相关推荐

    C++指针 数组 内存释放.docx

    C++指针数组内存释放 C++指针是一种基本变量,包含一个实际的数据,该数据代表一个可以找到实际信息的内存地址。指针是C++编程中非常重要的概念,许多程序和思想依靠指针作为他们设计的基础。 定义指针变量 定义...

    c_c++指针详解 指针详解

    C/C++指针详解 C/C++指针是编程语言中的一种基本数据类型,它们可以指向内存中的地址,可以存储变量的值,也可以存储函数的地址。指针的使用可以提高程序的效率和灵活性,但是也增加了程序的复杂度和出错的可能性。...

    C++指针经典教程(指针专讲)

    本教程旨在帮助初学者更好地理解和掌握C++指针的使用,涵盖了指针的基本概念、复杂类型的分析、指针的类型、指针所指向的类型、指针的值和指针本身所占据的内存区等方面的知识。 一、复杂类型的分析 在C++中,复杂...

    C和C++指针讲义

    ### C和C++指针详解 #### 指针的概念 指针是一种特殊的数据类型,在C和C++语言中有着非常重要的地位。它主要用于存储内存地址,并通过该地址访问内存中的数据。理解指针需要从四个方面入手:指针的类型、指针所...

    C++指针精髓 笔记

    本笔记将深入探讨C++指针的精髓,包括其基本概念、使用方法以及高级应用。 首先,我们要理解指针的基本原理。在C++中,指针是一个变量,它存储的是另一个变量的内存地址。当我们声明一个指针变量时,例如`int *p;`...

    C++指针与引用的区别

    C++指针与引用的区别 指针和引用是C++语言中两种不同的概念,初学者容易把它们混淆一起。这两种概念都是地址的概念,但它们有很多不同的特点和应用场景。 相同点 1. 都是地址的概念;指针指向一块内存,它的内容...

    C++指针及句柄

    ### C++指针及句柄详解 #### 一、引言 在计算机编程领域,特别是对于像C++这样的强类型语言来说,理解指针是非常重要的。指针是一种特殊的数据类型,它存储的是其他数据的内存地址。掌握指针的使用不仅能够帮助...

    C++指针精髓

    C++指针精髓 C++指针是一种特殊的变量,它存储的数值被解释成为内存里的一个地址。要了解指针,需要搞清指针的四方面的内容:指针的类型、指针所指向的类型、指针的值或者叫指针所指向的内存区、指针本身所占据的...

    C++指针——数组指针/函数指针

    在`main.cpp`文件中,可能包含了一些使用数组指针和函数指针的实际示例代码,这些代码可以进一步加深你对这两种指针的理解。通过实践,你可以更好地掌握如何在C++中有效地利用数组指针和函数指针,从而编写出更灵活...

    C++指针用ppt详解

    本文将通过PPT的形式详细解析C++指针的使用。 首先,指针是C++中的一种特殊变量,它存储的是另一个变量的内存地址。这个地址是一个整数形式的常量,代表了内存中的一个位置。例如,如果有一个整型变量`i`,其地址...

    C++指针资料 集合!!

    这份"**C++指针资料集合**"显然是一个宝贵的资源,包含了关于C++指针的多种学习材料,旨在帮助程序员深入理解和熟练运用指针。 C++中的指针本质上是一个变量,它存储的是另一个变量的内存地址。理解指针的三大关键...

    C++指针—指针讲解.ppt"

    掌握指针的使用对于深入理解和编写高效的C++代码至关重要。理解指针的声明、初始化、访问以及其与数组、函数参数和返回值的关系,是C++程序员必备的技能。在实际编程中,合理运用指针可以显著提升程序的性能和功能。

    C++指针详细解析——史上最精彩指针文章

    C++指针的掌握不仅在于理解其基本概念,更在于熟练应用。指针的灵活性使得它可以用于复杂的内存操作和数据结构的构建,但同时,不当的使用也会导致诸如野指针、内存泄漏等问题。因此,学习C++指针时,应注重实践,...

    C++指针详解(经典,非常详细).docx

    C++指针详解 C++指针是非常重要的概念,但许多人却感到头秃。只有彻底理解指针,才能更好地掌握C++语言。下面,我们将详细介绍指针的四个要素:指针的类型、指针所指向的类型、指针指向的内存区、指针自身占据的...

    c++指针面试题经典

    "C++指针面试题经典"这个资源,很可能是针对C++开发者,特别是初级到中级水平的程序员设计的面试题集合,旨在测试和提升他们在指针方面的理解与应用能力。金山公司的面试题历来以深度和实用性著称,这些题目和解答...

    C_C++指针常量和常量指针详解

    通过对C/C++中指针常量与常量指针的深入理解,我们不仅能够更灵活地运用这些概念来编写高效可靠的代码,还能够更好地避免常见的编程错误,提升程序的整体质量。正确区分并运用这两种指针类型,对于开发高质量的C/C++...

    C++指针经典应用

    ### C++指针经典应用详解 #### 指针与数组的隐式转换 在C++中,指针与数组之间存在一种特殊的关联性。数组名实际上可以被视为指向该数组第一个元素的指针。这一点在代码片段中得到了体现: ```cpp char str[] = ...

    c++指针基础

    c++指针基础是c++编程语言中非常重要的概念,理解指针的概念和使用方法是c++编程的基础。只有掌握了指针的概念,才能更好地理解和使用c++编程语言。 在实际编程中,指针的使用非常广泛,例如数组、链表、树形结构等...

    c++数组指针ppt

    C++数组指针PPT C++数组指针是C++编程语言中两个重要的概念,数组和指针都是C++编程的基础概念。理解数组和指针的关系和...C++数组指针是C++编程语言中的基础概念,理解数组和指针的关系和使用方法是C++编程的关键。

Global site tag (gtag.js) - Google Analytics