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;
    }

  • 相关阅读:
    September 22nd 2016 Week 39th Thursday
    September 21st 2016 Week 39th Wednesday
    android 几个小技巧
    深入理解计算机系统----经验之谈
    输入数字如何获取
    super 和this的用法
    java程序员修炼之道
    eclipse 如何使用svn
    如何手动添加Android Dependencies包
    如何查看正在使用端口号并利用任务管理器将其关闭
  • 原文地址:https://www.cnblogs.com/webcyh/p/11320377.html
Copyright © 2011-2022 走看看