星空网 > 软件开发 > ASP.net

C++指针一

指针也是变量,占有内存空间,用来保存内存地址。

指针也是一种数据类型,指针是一种数据类型,是指它所致内存空间的数据类型。

指针变量和它指向的内存块是两个不同的概念

  *p操作内存

  在指针声明时,*号表示所声明的变量为指针

  在指针使用时,*号表示操作指针所指向的内存空间中的值

  *p相当于通过地址(p变量的值)找到一块内存;

  然后操作内存 *p放在等号的左边赋值(给内存赋值)

  *p放在等号的右边取值(从内存获取值)

#include <iostream>using namespace std;#include <stdio.h>void change(int num){  num=666;}void changeA(int *num){  *num=666;}void printfSingleArrayInt(int *p,int n){  cout<<"/**********************************/"<<endl;  cout <<p<< endl;  cout<<sizeof(p)<<endl;//4  for(int i=0;i<n;i++){     cout<<*(p+i)<<endl;  }  cout<<"/**********************************/"<<endl;}void printfSingleArrayIntS(int a[10]){  cout<<"/*****************s*****************/"<<endl;  cout<<sizeof(a)<<endl;//4  for(int i=0;i<10;i++){     cout<<*(a+i)<<endl;  }  cout<<"/**********************************/"<<endl;}int main(){  int a[10]={0};  for(int i=0;i<10;i++){    a[i]=i;  }  int *p;  //指针的步长,根据所指内存空间类型来定。  cout<<sizeof(p)<<endl;//4  p=a;  cout<<sizeof(p)<<endl;//4  cout<<sizeof(a)<<endl;//40  cout<<sizeof(a+1)<<endl;//4  cout<<sizeof(&a)<<endl;//4  cout<<sizeof(&a+1)<<endl;//4  printfSingleArrayInt(p,10);  printfSingleArrayIntS(a);  printf("%d %d\n",a,a+1);  printf("%d %d\n",&a,&a+1);  return 0;}int main01(){  int num=100;  int *p=&num;  cout <<&num<< endl;//打印num的地址  num=1;//直接修改num的值  cout <<num<< endl;//打印num的值  *p=100000;//间接修改num的值  //*p放在等号的左边间接修改内存空间的值  /** *p 的意义:*就像一把钥匙,根据一个指针变量的值,去修改门后门的内存空间 **/  cout <<num<< endl;  change(num);  cout <<num<< endl;/*  间接赋值成立的三个条件  a)2个变量(通常一个实参,一个形参)  b)建立关系,实参取地址赋给形参指针  c)*p形参去间接修改实参的值*/  changeA(p);  cout <<num<< endl;  int a=*p;////*p放在等号的右边从内存空间中拿值  cout <<a<< endl;/*  {    char *b=NULL;    *b='j';  }*/  return 0;}

C++指针一

  cout<<sizeof(a)<<endl;//40  a所对应的地址所包含数据类型的长度
cout<<sizeof(a+1)<<endl;//4
cout<<sizeof(&a)<<endl;//4 &a是数组a的地址,占四个字节
cout<<sizeof(&a+1)<<endl;//4 &a+1是数组a+1的地址,占四个字节

a,a[0],&a这三个元素打印的地址是相同的。

a+i 表示的是以内存地址a移动了i个int的地址。

  printf("%d %d\n",a,a+1);
  printf("%d %d\n",&a,&a+1);

&a 与 &a+1 之间相差了几个元素呢?

  &a代表的是把数组看成一个整体取地址

  &a + 1 则表示数组作为一个整体移动了一个元素(数组)。

间接赋值成立的三个条件

a)2个变量(通常一个实参,一个形参) b) 建立关系,实参取地址赋给形参指针 c) *p形参去间接修改实参的值




原标题:C++指针一

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

加拿大税务局(CRA):https://www.ikjzd.com/w/4630
海湾阿拉伯国家合作委员会:https://www.ikjzd.com/w/4631
falbku:https://www.ikjzd.com/w/4632
findlayrowedesigns:https://www.ikjzd.com/w/4633
fitzeri:https://www.ikjzd.com/w/4634
Foot Cardigan:https://www.ikjzd.com/w/4635
23点聊电商:新质生产力加速数字贸易发展 卓尔智联集团实现营收利润双增长 :https://www.kjdsnews.com/a/1836411.html
南京浦口都有什么好玩的地方 南京浦口都有什么好玩的地方推荐:https://www.vstour.cn/a/363180.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流