2.7-C语言入门-指针

1.指针的含义-变量的地址

a.指针:C语言中用“指针”来表示内存地址(即:指针指向了内存地址),即“指针”可理解为“变量的地址”,指针是一个unsigned类型的整数
b.变量的地址:即变量占用的字节中第一个字节的地址,计算机通过该地址找到某个变量
c.如何获得变量的地址:在变量前面加上“&”,就表示变量的地址

2.指针变量

a.指针变量:用来存放指针(即变量的地址),表示方式是在某种数据类型后面加星号*
int* p;
double* p;
char* p;

b.给指针变量赋值的方式:把变量的地址取出来,然后赋给对应类型的指针变量
int a;
int* p = &a;
注意:地址&a是赋值给p而不是*p的(即:星号是类型的一部分)

3.指针与数组

a.数组名称也可作为数组首地址使用

 int a[10]=1; 
 int* p = a;  //相当于int* p = &a[0]  

b.两个int型的指针相减,等价于在求两个指针之间相差了几个int


4.使用指针变量作为函数参数

a.含义:把变量的地址传入函数。如果在函数中对这个地址中的元素进行改变,原先的数据就会确实地被改变。

 void change(int* p){ 
   *p=233; 
  }

b.单向一次性的值传递:相当于产生一个副本

void swap(int a,int b){
  int temp=a;
  a=b;
  b=temp;
}

c.使用指针变量作为参数时的地址传递:只有在获取地址的情况下对元素进行操作,才能真正地修改变量

void swap(int* a,int* b){
   int temp=*a;
  *a=*b;
  *b=temp;
}


5.引用

a.是C++的一个强有力的语法,使用时文件须保存为.cpp类型
b.引用:不产生副本,而是给原变量起了个别名。对引用变量的操作就是对原变量的操作
c.格式:在函数的参数类型后面加个&(注意:引用并不是取地址的意思)

void change(int &x){
  x=1;
}

d.指针的引用:

void swap(int* &p1,int* &p2){
  int* temp=p1;
  p1=p2;
  p2=temp;
}

你可能感兴趣的:(2.7-C语言入门-指针)