zoukankan      html  css  js  c++  java
  • 本人对于指针的小认知

    #include<iostream>
    using namespace std;
    int main(){
    int a=12;
    char *p;
    p =(char*)&a;
    *p='a';
    cout<<(char*)(&a);
    cout<<&a;
    cout<<*(&a);
    
    return 0;
    }

    &a返回的是一个地址(也可以称为指针)该指针类型与a的数据类型一致  要取出该值 必须告诉计算机这是一个地址要用这个地址去取出值 *(&a) 用于取出该地址对应的内存地址的值

    p = &a;若上面直接这样赋值将会报错:这是因为&a 返回的是整型数据的地址  而p确是字符型地址 应该将整型指针转换成字符型指针 这里将把其当作字符型数据的地址 查找相关的地址 读者可以观察到上面
    cout<<(char*)(&a);和
    cout<<*(&a);
    结果是不一样的


    #include<iostream>
    using namespace std;
    int main(){
    int a=12;
    char *p;
    p =(char*)&a;
    //p=&a;
    *p='a';
    //cout<<p<<""<<endl;
    //cout<<&a;
    cout<<(char*)(&a)<<endl;
    cout<<&a<<endl;
    cout<<*(&a)<<endl;
    *(&a)=98;
    cout<<*p;
    return 0;
    }
    

     

     
    error: cannot convert ‘int*’ to ‘char*’ in assignment
    p=&a; 
    

      

    #include<iostream>
    using namespace std;
    void func(int size,int *p,int p1[]){
    cout<<"p1地址"<<p1<<endl;
        for(int i=0;i<size;i++){
          cout<<p1[i]<<(p+i)<<" "<<*(p+i)<<endl;
        }
    }
    int main(){
    #include<iostream>
    using namespace std;
    //p1相当于别名
    void func(int size,int *p,int p1[]){
    cout<<"p1地址"<<p1<<endl;
        for(int i=0;i<size;i++){
          cout<<&(p1[i])<<(p+i)<<" "<<*(p+i)<<endl;
        }
    }
    int main(){
    
    int a[4]={1,2,3,1};
    cout<<"地址"<<a<<endl;
    func(4,a,a);
    
    
    return 0;
    }

  • 相关阅读:
    字节顺序(大端小端)
    动态数组(一维二维)探秘
    算法十正则表达式匹配
    算法九回文数
    算法八字符串转换正数(atoi)
    windows server 2008配置多用户远程连接
    算法七整数反转
    原码反码补码
    算法六Z自形变换
    Java学习笔记之:Java Map集合
  • 原文地址:https://www.cnblogs.com/webcyh/p/11320377.html
Copyright © 2011-2022 走看看