首页 > 学院 > 开发设计 > 正文

指针

2019-11-08 02:29:06
字体:
来源:转载
供稿:网友

指针是用来专门存放地址的数据类型 1、定义一个指针时,必须规定它指向的变量类型,如int* p 【注意:如果写成int * ipa,ipb,ipc,其实只有ipa是指针类型,ipb、ipc还是int类型】 2、最好能初始化,即int a=47;int* p=&a;,C++编程的一般原则是定义时初始化

指针传递 通常,向函数传递参数时,在函数内部生成该参数的拷贝,称为“按值传递”。 如果我们传递一个指针给函数,实际上就是传递外部对象的别名,使函数能修改外部对象。(外部对象:如以下程序中,对于f(),main中的x就是外部对象)

#include <iostream>using namespace std;void f(int* p){ cout<<"p= " <<p <<std::endl; cout<<"*p= "<<*p<<std::endl; *p=5; cout<<"*p= "<<p<<std::endl;}int main(){ int x=47; cout<<"x= "<<x<<std::endl; cout<<"&x= "<<&x<<std::endl; //传入指针 f(&x); cout<<"x= "<<x<<std::endl; return 0;}

int *p=&x; 定义指针 *p:取指针p指向的变量的值 &x:取变量x的地址

引用传递 引用传递参数,不用int*传递指针,而是用int&传递实参的引用,带引用的参数调用比带指针的函数调用在语法上更加清晰。

#include <iostream>using namespace std;void f(int& r){ //用int&r作为引用参数,直接传递调用者参数的地址 cout<<"&r= "<<r<<endl;}int main(){ int x=47; f(x); return 0;}

理解: 1、指针是指向一个变量的,保存的是该变量的地址,相当于该变量的一个别名,指针传递参数相当于保存了该变量的地址,传递给调用函数,咋调用函数中通过指针拿到该变量值 2、引用传递,实际上就是传递实参,而被调用函数的形参是该实参的引用。

void*:意味着任何类型的地址都可以间接引用那个地址。 int*:只能针对int类型变量的地址可以间接引用那个地址。 一旦间接引用void*,就会丢失关于类型的信息,使用前必须转换。

int i=99;void* vp=&i;*((int*) vp)=3;
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表