国二之指针

国二之指针(这里写自定义目录标题)

指针相关概念

1.指针的实质是地址
2.指针变量
变量在编译的时候,系统会为其分配一个地址,如果用另一个变量来存放这个地址,就是指向变量的指针变量

指针变量就是用来存放指针(地址)的变量,它的值是另一个变量的地址

3、指针变量实例:
1.指向整型变量
int *p; //指向整型变量的指针变量,用来存放整型变量的地址
2.指向数组
int a[5]; int *q = a; //指向数组第0个元素的指针变量
分析:int a[5],有五个元素,分别是变量 a[0]、 a[1]、 a[2]、 a[3]、 a[4],且a代表的是第0个元素(变量a[0])的起始地址。而变量a[0]的类型是int,所以int *p =a; 是合法的。
3.指向字符串
char *string = “hello”; //指向字符串的指针变量,string 是一个指针变量,用来存放字符串的首地址,而"hello"返回字符串的首地址
4.指向函数
int (*foo)(int x, int y); //指向函数的指针变量
分析:int (*foo)(int x, int y) 中加粗部分说明foo是一个指针变量,那又是怎样的指针变量呢?
再看接下来加粗部分:int (*foo)(int x, int y); 这说明foo是一个指向函数(该函数有两个int类型的形参,且返回int 类型的数据)的指针变量
5.指向结构体
struct student *boy; //指向结构体的指针变量

1)指针变量定义的格式:类型标识符 *变量名;
如:int *point;

国二之指针
特别说明:
表示该变量的类型是一个指针变量,指针变量名是p1
而不是
p1
给指针变量初始化有两种方式:
1.在定义时初始化,如int *p_2 = &b;
2.先定义再初始化,如int *p1; p1 = &a;
*p1是p1所指向的变量的值;
一个指针变量只能指向同一个类型的变量。

3)对于指针变量的两个运算符“*”与“&”:
& 取地址运算符 //&a就代表a的地址(指的是a所在内存空间的起始地址)
指针运算符
//*p为p所指向的存储单元的内容
如果有 int buf[4] = {1, 2, 3,4}, *p = buf; 意味着p指向buf数组中第0个元素的起始地址
int array[10];int *p = array;则此时p+i和array+i都是数组元素array[i]地址
国二之指针
国二之指针