指针【C++】

概念

指针就是一个用来存放地址的变量。 

如何使用指针:可以通过解引用的方式来找到指针指向的内存。
指针前加* 代表解引用,可以找到指针中存放的地址内存中的数据。

指针所占内存空间

指针也是一种数据类型,他会占据一定的内存空间

int a=10;

int *p=&a;
//在32位操作系统下,指针是占4个字节空间大小,不管是什么数据类型的指针
//在64位操作系统下,指针是占8个字节空间大小
cout<<"整型数据指针所占内存空间大小"<<sizeof(p)<<endl;
cout<<"整型数据指针所占内存空间大小"<<sizeof(int*)<<endl;
cout<<"浮点型数据指针所占内存空间大小"<<sizeof(float*)<<endl;
cout<<"字符型数据指针所占内存空间大小"<<sizeof(char*)<<endl;

 空指针NULL和野指针

空指针:指针变量指向内存中编号为0的空间
用途:初始化指针变量
注意:空指针指向的内存是不可以访问的(因为0~ 255之间的内存编号是系统占用的,因此不可以访问)

 野指针:指针变量指向非法的内存空间

//野指针
//对16进制的数,强制转化成int型指针
int *p=(int*)0x1100

//会报错,因为p是野指针,0x1100地址不是我们申请的内存空间,因此我们对0x1100地址无访问权限
cout<<*p<<endl;

const修饰指针

const修饰指针有三种情况:
1、const修饰指针--- 常量指针
2、const修饰常量--- 指针常量
3、const既修饰指针,又修饰常量

int a=10,b=20,c=30;

//常量指针:在指针的前面加一个关键字const
//特点:指针的指向可以修改,但是指针指向的内存中的数据不可以改
const int* p=&a;
*p=20;         //error,指针指向的内存中的数据不可以改
p=&b;          //true,指针的指向可以修改

//指针常量:const修饰的是指针变量p,因此称为指针常量
//特点:指针的指向不可以改,指针指向的内存中的数据可以改
int* const p=&a;
*p=20;         //true,指针指向的内存中的数据可以改
p=&b;          //error,指针的指向不可以改


//特点:指针的指向和指针指向的值都不可以改
const int* const p=&a;
*p=20;         //error
p=&b;          //error

 指针和函数

//封装一个函数,利用冒泡排序,实现对整型数组的升序排序
//例如数组  int arr[10]={4,5,7,2,3,9,1,5,8,9}
//若形参是指针,可以改变实参

void bubbleSort(int *arr,int length)    //int *arr等价于 int arr[]
{
   //arr[j] 等价于*(arr+j)
   for(int i=0;i<lenght-1;i++){
      for(int j=0;j<length-1-i;j++){
         if(arr[j]>arr[j+1]){
            int temp=arr[j];
            arr[j]=arr[j+1];
            arr[j+1]=temp;
         }
      }
   }
}

int main(){
   int arr[]={4,5,7,2,3,9,1,5,8,9};
   int length=sizeof(arr)/sizeof(arr[0]);
   bubbleSort(arr,length);
   for(int i=0;i<length;i++){
      cout<<arr[i]<<endl;
   }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值