c++指针浅尝

//本文是学习《C++程序设计教程--设计思想与实现》的笔记。

1、指针类型:

基本数据类型,如int,float,char,double等其中每一种基本数据类型都有相对应的指针类型。如,建立一个整型指针处理整型数,建立字符指针处理字符。

2、定义指针变量

int * iptr;//*居中

int* iptr;//*靠左

int *iptr;//*靠右

const int * icp;//指向常量的指针

3、建立指针

用&操作符可以获取变量的地址,指针变量用于存放地址。

int * iptr;

int iCount = 18;

iPtr = &iCount;//将地址赋给存放地址的变量(指针)

4、间接引用指针

“*”是乘法,又可以用于定义指针,这里可用于指针的间接引用(*的第三个用途)。

间接引用指针时,可获得由该指针指向的变量内容。

列入:

代码如下:  

#include<iostream.h>
int main(){
int iCount =18;
int * iPtr = &iCount;
*iPtr = 58;
cout<<iCount<<endl;
cout<<iPtr<<endl;
cout<<&iCount<<endl;//与iPtr相同
cout<<*iPtr<<endl;//与iCount值相同
cout<<&iPtr<<endl;//指针本身的地址
}

运行结果如下:

*放在可执行语句中的指针之前,称为间接引用操作符。*在指针定义中时。称为指针定义符。

非指针变量不能用间接引用操作符。因为*只能作用于地址。

指针也是变量,是变量就具有内存地址,所以指针也有地址。

5、指针与整型数的区别

在32位机器中,整型和指针都占4个字节,内存表示方式也都是二进制整数,但指针和整数表示的是不同类型。

6、指针的初始化

int iCount = 26;

int* iPtr = &iCount;//程序正确执行,这是定义语句,*是指针定义符,C++为iPtr指针分配一个指针空间,并用iCount的地址值初始化。

*Ptr = &iCount;//错误左右两边类型不匹配。

*操作符在指针上的两种用途要区分:定义或声明时。建立一指针;执行时,间接引用一指针。

指针在使用前,要进行初始化。

指针忘了赋值比整型忘了赋值要危险很多。

int count;

int * iptr;

*iptr =58;//!

代码能通过编译,但是没有赋初始值的指针iPtr是一个随机地址。"*iPtr = 58;"把58赋值到内存中的随机位置,因此将改写另一个存储位置的数值,甚至修改了栈中的函数返回地址,计算机将死机,或者进入死循环。

 7、指针类型与实际存储的匹配

指针是有类型的,给指针赋值,不但必须是一个地址,而且应该是一个该指针类型相符的变量或者常量的地址。

例如:

#include<iostream.h>
int main(){
float f = 34.5;
float *fPtr= &f;
//int *iPtr = &f;//error: cannot convert `float*' to `int*' in initialization
//iPtr = fPtr;// error: cannot convert `float*' to `int*' in initialization
cout << f << endl;
//cout << "iptr`:" << iPtr << "=>" << *iPtr << endl;
cout << "fptr:" << fPtr << "=>" << *fPtr << endl;
//*iPtr = *fPtr;//隐式数据转换
cout << f << endl;
//cout << *iPtr << endl;
cout << *fPtr << endl;
}

 

指针具有一定类型,它的值为地址的变量,该地址是内存中另一个该类型变量的存储位置。或者说指针是具有某个类型的地址。

 

转载于:https://www.cnblogs.com/FanPigPig/p/4685274.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值