`
mmdev
  • 浏览: 12928707 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

C++指针入门(一)

 
阅读更多

关于指针的2个函数分析

1:ab两个整数,按先后大小的顺序输出

#include<iostream>

usingnamespacestd;

voidmain(){

int*p1,*p2,*p;

inta=45;

intb=78;

p1=&a;

p2=&b;

if(a<b){

p=p1;

p1=p2;

p2=p;

}

cout<<"a="<<a<<"\nb="<<b<<endl;

cout<<"max="<<*p1<<"\nmin="<<*p2<<endl;

}

分析:这个问题的算法是不交换整型变量的值,而是交换两个指针变量的值。变量ab的内容并未交换,它们仍保持原值,但p1和票的值改变了。P1的值原为&a,后来变成&bp2原值为&b,后来变成&a。这样在输出*p1*p2时,实际上是输出变量ba的值。

2指针作为函数参数,输出大小

#include<iostream>

usingnamespacestd;

voidswap(int*p1,int*p2){

inttemp;

temp=*p1;

*p1=*p2;

*p2=temp;

}

voidmain(){

int*pointer_1;

int*pointer_2;

inta=45;

intb=78;

pointer_1=&a;

pointer_2=&b;

swap(pointer_1,pointer_2);

cout<<"max="<<a<<"min="<<b<<endl;

}

分析:运行后将ab的地址分别赋给指针变量pointer_1pointer_2,使pointer_1指向apointer_2指向b。之后执行swap函数。注意实参pointer_1pointer_2是指针变量,在函数调用时,将实参变量的值传送给形参变量,通过虚实结婚,形参p1得到实参pointer_1的值&a,形参p2得到实参pointer_2的值&b。这时p1pointer_1都指向变量ap2pointer_2都指向变量b。接着执行swap函数,使*p1*p的值互换,也就是使ab的值互换。函数调用结束后,p1p2释放,不复存在。本例采取的方法是交换ab的值,而p1p2的值不变。这恰和例1相反

值传递是单向传递的,为了使在函数中改变了的变量值能被main函数所用,不能采取把要改变值的变量作为参数,而应该用指针变量作为函数参数。在函数执行过程中使指针变量所指向的变量值发生变化,函数调用结束后,这些变量值的变化依然保留下来,这样实现了“通过调用函数使变量的值发生变坏,在主调函数中使用这些变化了的值”的目的。

如果想通过函数调用得到n个要改变的值,可以采取下面的步骤:1、在主调函数中设n个变量,用n个指针变量指向它们;2、编写被调用函数,其形参为n个指针变量,这些形参指针变量应当与主调函数中的n个指针变量具有相同的基类型;3、在主调函数中将n个指针变量作为实参,将它们的值(地址值)传给所调用函数的n个形参指针变量,这样,形参指针变量也指向这n个变量;4、通过形参指针变量的指向,改变该n个变量的值;

5、在主调函数中就可以使用这些改变了值的变量。

注意:不能企图通过改变形参指针变量的值而使实参指针变量的值改变。

int*pointerpointer是指针变量,指针变量中存放的值是地址(即指针,也称为指针变量的值)

int*p这个p存储的是内存单元的地址,不是变量的地址。例如:

int*p1;

inta=45;

p1=&a;

a=90;

p1=&a;

此时如果输出p1会发现p1的值不变,因为并没有改变p1的值。仍指向一开始的内存单元地址,而a的保存的内存地址也没有变,而是里面保存的内存单元内容发生改变。

内存单元地址内存单元内容

在程序中一般是通过变量名来对内存单元进行存取操作的,其实程序经过编译后已经将变量名转换为变量的地址,对变量值的存取都是通过地址进行的。如inta=45;在编译后a代表内存中的地址,45代表着内存单元中的内容。

指针也可在定义的时候初始化:inta=45int*p=&a;

数组与指针

C++中数组名代表了数组中的第一个元素的地址,同样数组名不代表整个数组。因此:

int*p;p=&a[0];óp=a;a数组的首元素地址赋给p,而不是把数组a的各个赋给p

数组名代表数组首元素地址

voidmain(){

inta[5]={7,8,9,24,35};

int*p=a;

for(inti=0;i<5;i++){

cout<<*(p+i)<<endl;

}

}

字符串与数组

voidmain(){

charstr[]=“ILoveChina”;

cout<<str<<endl;

char*str2=“ILoveE”;

cout<<str2<<endl;

return0;

}输出:ILoveChina

str是字符数组名,它代表字符数组的首元素的地址,输入时从str指向的字符串开始,逐个输出字符,直至遇到’\0’为止。

分享到:
评论

相关推荐

    C++ 指针入门操作

    C++指针详细介绍。看了很容易入门。挺实用。

    c++初学入门

    c++语言入门基础知识,共计12个课题,第一课题:c++语言的基本框架 第二课题:c++语言的基本数据类型表达式 第三课题:c++语言的基本语句及顺序结构的程序...第十一课题:c++指针类型 第十二课题:计算机中信息的表示(增)

    鸡啄米:C++编程入门系列

    鸡啄米:C++编程入门系列之三十一(数组、指针和字符串:对象指 针) 鸡啄米:C++编程入门系列之三十二(数组、指针和字符串:动态内存 分配和释放) 鸡啄米:C++编程入门系列之三十三(数组、指针和字符串:用...

    《C++ 入门》.PDF

    《C++ 入门》,作者:不详,pdf 格式,大小 8.3MB。 目录: 第一部分 C++ 基础 第一张 面向对象 第二章 c++ 及编程基础 第三章 数据类型、标识符和关键字 第四章 存储分类符和作用域 第五章 运算符、优先级和结核性 ...

    C++中关于指针入门的最好的文章

    C++中关于指针入门的最好的文章C++中关于指针入门的最好的文章C++中关于指针入门的最好的文章

    C++编程指针入门

    清华大学C语言入门ppt,适合各种各样的人群,绝对很好!这个ppt对指针讲解深刻,有独到的见解。

    C++指针探讨(入门级指针介绍)

    C++指针探讨 包含: 1、数据指针 2、函数指针 3、成员函数指针 4、函数对象

    正宗《Visual C++2008入门经典》中文 高清完整版PDF part5(共6部分)

    本书系编程语言先驱者Ivor Horton的经典之作,是C++编程方面最畅销的图书品种之一,不仅涵盖了Visual C++ 2008编程知识,还全面介绍了标准C++语言和C++/CLI。本书延续了Ivor Horton讲解编程语言的独特方法,从中读者...

    c++关于指针的学习资料

    学习c++的指针的入门资料,指针作为c++的核心,是学习C++的重点,主要为初学者介绍指针部分

    C++入门到精通、指针经典讲解

    C++指针经典.pdf ---使你不再怕指针。 C++入门到精通.pdf ---- 特别适合初学者。

    c++中指针的详细介绍

    本书介绍了如何学好指针,对于c/c++刚入门的人会有帮助,想学好c++的朋友,可以去看看。

    C++指针介绍及使用说明

    通过本文的学习,读者不仅能够全面理解C++指针的基础知识,还能够掌握指针在实际编程中的应用技巧。文章不仅适合初学者入门学习,也能够帮助有一定基础的程序员深化对指针的理解,提高编程水平和代码质量。无论是...

    C++编程入门系列_入门_C++_c++编程入门_源码

    C++编程入门,主要内容包括:1、c++编程概述,2、c++简单程序设计,3、函数讲解,4、类与对象,5、c++程序设计必知,6、数组、指针和字符串,7、继承与派生,8、多态性,9、异常处理

    C++入门经典(第3版)

    中文名: C++入门经典(第3版) 作者: (美)霍顿 译者: 李予敏 图书分类: 软件 内容介绍: C++在几乎所有的计算环境中都非常普及,而且可以用于几乎所有的应用程序。C++从C中继承了过程化编程的高效性,并集成了面向对象...

    C++入门经典(第9版) ([美]Walter Savitch著) 中文pdf完整扫描版[302MB]

    第1章 计算机和C++编程入门 第2章 C++基础知识 第3章 更多的控制流程 第4章 过程抽象和返回值的函数 第5章 所有子任务的函数 第6章 I/O流:对象和类入门 第7章 数组 第8章 字符串和向量 第9章 指针和动态数组 第10章...

    新手学习C++入门资料

    主体:(一)&lt;C++与C语言的区别&gt; 一、C++概述 (一) 发展历史 1980年,Bjarne Stroustrup博士开始着手创建一种模拟语言,能够具有面向对象的程序设计特色。在当时,面向对象编程还是一个比较新的理念,Stroustrup...

    c++指针入门

    关于指针方面的问题及其解决

    关于指针入门最好的文章

    指针一直是C++学习中的一个难点,本文象形的介绍了指针的用法,并以实例说明。

    C++经典入门(PDF)

    本书详尽论述了C++语言的各个方面,包括数据类型、程序控制、函数、指针、调试、类、重载、继承、多态性、模板、异常和输入输出等内容。每一章都以前述内容为基础,每个关键点都用具体的示例进行详细的讲解。 本书...

    C++轻松入门

    《C++轻松入门》是一本为程序设计初学者轻松地学习C++编程语言而编写的图书。《C++轻松入门》从初学者认知的角度出发,由浅入深、循序渐进地讲解了C++编程语言中的各种编程技术,通过通俗易懂的讲解和丰富生动的典型...

Global site tag (gtag.js) - Google Analytics