关于C指针问题浅谈(一)
指针概念
用指针类型声明的变量就是指针变量
常见类型有 int char float 等; 在他们后边加入* 就可以改变为指针类型 int* char* float*
int a; //声明为int 型变量 int* a // 声明为一个指向int 类型的指针 a 为指针其值为地址空间 *a 为地址空间里面的值 //其他类型同理 char * b float * c;
指针变量存放的是变量的内存地址; 一般有十六进制表示 例如:0X013f3f67 地址为32为无符号整数 大概有 2^32 的地址 也就是4GB
struct A{
int a;
int b;
}
int mian()
{
cout<<sizeof(char*)<<endl;
cout<<sizeof(int*)<<endl;
cout<<sizeof(float*)<<endl;
cout<<sizeof(unsigned int )<<endl;
cout<<sizeof(A*)<<endl;
}
//结果都为4 由此可知指针在32计算占4字节
如何获取地址 实际中不可能知道相应地址 只能通过& 取地址
同类型指针只能取同类型地址
int main()
{
int a=9;
int * p=&a;
cout<<"a的地址为:"<<p<<endl;
cout<<"a的地址为:"<<&a<<endl;
return 0; }
同样结构体类型也可以取地址
struct Person { int age=18; //char name[]= "LiMimg"; const char *name2 = "LIHUA"; }; int main() { struct Person man;//C语言写法 struct Person *pA = &man; /* C++写法:也可兼容C语言写法 Person man; Person *pA = &man; */ cout << "Person 地址为:" << pA << endl; cout << pA->age << pA->name2 << endl; return 0; }

