C程序设计笔记 第八章 指针

变量的地址称为指针

int a=100;
int *p;//定义指向整型数据的指针变量p,*号代表此变量是一个指针变量。知道了数据类型int, 才知道怎么从p这个地址中取值
p=&a;//将变量a的地址赋给指针变量p
cout<<*p; //*p代表p指向的变量
*p=3; //相当于a=3,即将3赋给p指向的存储单元。

以下是错误的,因为没有了p=&a这一步,则p是一个野指针,指向未知的存储单元:

int *p;
*p=3; //相当于向一个位置的存储单元赋值

指针传参:

void F(int *p1,int *p2)
{
    *p1=1;	//把1赋值给p1所指向的存储单元
    *p2=2;  //把2赋值给p2所指向的存储单元
}

int main()
{
   	
    int a,b;
    int *p1,*p2;
    p1=&a;  p2=b;
    F(p1,p2);  
}

 

指针引用数组元素:

int a[100];
int *p=a;  //注意是p=a不是p=&a,因为a是数组不是变量,a已经是数组首元素地址了
cout<<*(p+i); //相当于cout<<a[i],p是一个地址,p+1时实际上是p+sizeof(int)。a[i]中的[]实际 上是变址运算符,相当于是*(a+i)

猜你喜欢

转载自blog.csdn.net/weixin_41519463/article/details/88424432