变量的地址,每个变量都是存放在内存种的某个位置的。
如何查看一个变量的地址?
int a;
&a;
printf("%p", &a);
指针变量:是一类专门存储其他变量的地址的变量。
int * p; // p是一个指针变量,它所指向的变量的类型为整型变量
p存储哪个变量的地址,我们就说p指向了谁
p = &a;
如何通过指针变量获得它所指向的变量呢?
*p ==== a
需要注意的问题
1)指针变量一定要初始化后才能够使用
2)指针变量的类型要和它实际指向变量的类型保持一致
int * p = NULL;
表示空指针,没有指向任何变量。
指针变量的用途?
1)用来作为函数的参数,实现特殊的功能
通过指针作为函数的参数,实现在函数内部修改实参的值。
变量的地址,每个变量都是存放在内存中的某个位置的。
如何查看一个变量的地址?
int a;
&a;
printf("%p", &a);
指针变量:是一类专门存储其他变量的地址的变量。
int * p; // p是一个指针变量,它所指向的变量的类型为整型变量
p存储哪个变量的地址,我们就说p指向了谁
p = &a;
如何通过指针变量获得它所指向的变量呢?
*p ==== a
需要注意的问题
1)指针变量一定要初始化后才能够使用
2)指针变量的类型要和它实际指向变量的类型保持一致
int * p = NULL;
表示空指针,没有指向任何变量。
指针变量的用途?
1)用来作为函数的参数,实现特殊的功能
通过指针作为函数的参数,实现在函数内部修改实参的值。
void swap1(int *a, int *b)
{
int t = *a;
*a = *b;
*b = t;
}
int main()
{
int x=9, y=8;
//swap(x,y);
swap1(&x, &y);
printf("%d,%d", x, y);
return 0;
}
指针变量作为函数的形参,实参应该传递指针或者普通变量的地址(形参和实参的类型要求一致)如果想要得到每个字符串,可以用二维字符数组名+行下标的方式来得到每行字符串
2)用指针可以更方便的处理连续的数据,通常是和数组结合使用(也更容易出错)
指针和数组之间的关系,指向数组元素的指针,在这种情况下,指针可以进行一些运算
指针可以和整数进行算术运算 p+1 p+d p-1 p-d p++ p--
指针变量进行算术运算的含义?
并不是简单的数值加1,而是根据指针所指向的类型的大小来决定得到一个地址值,p+sizeof(int) ===> p+d
通常用在通过指针访问数组中的元素。
两个指针可以进行比较 p1 < p2
ps:*p++、*(p++)以及(*p)++区别:
1、*p++与*(p++)是等价的,表示取p所指单元的值,p指向下一单元,即p自加1。
2、*p++是指下一个地址。
3、(*p)++是指将*p所指的数据的值加一。