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

 

posted on 2019-08-08 12:09  渐凸强、啊哈  阅读(142)  评论(0编辑  收藏  举报