指针(1)
指针的定义:指针就是地址,而地址就是内存单元的编号(不是编码 ASCII中的是编码)
/*
指针的基本表示。
*/
#include <stdio.h>
int main(void)
{
int * p; /*
int *表示p变量存放的是int类型变量的地址;
同样double *存放的是双精度浮点数类型变量的地址,
p表示变量名称。
*/
int i = 5;
p = &i; // &表示取地址符,取得i在内存中所占用的地址
printf("%d\n", *p);//*p 表示以p的内容为地址的变量
return 0;
}
/*
输出结果:
5
Press any key to continue
*/
/*
指针的常见错误。
*/
#include <stdio.h>
int main(void)
{
int * p;
int i = 5;
*p = i; //此时p中是垃圾值代表着另一个变量的地址 不能这就样赋值。
printf("%d\n", *p);
return 0;
}
/*
用函数交换两个数的值
*/
#include <stdio.h>
void huhuan_1(int , int)
{
int i, j;
int t;
t = i;
i = j;
j = t;
return;
}
int main(void)
{
int a = 5;
int b = 3;
huhuan_1(a, b); //这函数只是在内部将两个形参互换,实参并没有真正的进行互换。
printf("%d %d\n", a, b);
return 0;
}
/*
5 3
Press any key to continue
*/
/*
用函数交换两个数的值
*/
#include <stdio.h>
void huhuan_2(int * i, int * j)
{
int * t;
t = i;
i = j;
j = t;
return;
}
int main(void)
{
int a = 5;
int b = 3;
huhuan_1(&a, &b); /*i 代表的是a的地址是一个16进制的数据,j 代表的是b的地址
在函数中只是将a的地址换给了j,b的地址换给了i对a与b的值没有影响。*/
printf("%d %d\n", a, b);
return 0;
}
/*
5 3
Press any key to continue
*/
/*
用函数交换两个数的值
*/
#include <stdio.h>
void huhuan_3(int * i, int * j)
{
int t;
t = *i;
*i = *j;
*j = t;
return;
}
int main(void)
{
int a = 5;
int b = 3;
huhuan_3(&a, &b); //*i指向的是a可以说是i地址内的内容,所以可以进行互换了
printf("%d %d\n", a, b);
return 0;
}
/*
3 5
Press any key to continue
*/
初看指针总结:指针相当于邮箱编号,而邮箱内部就是特定的信封(变量),我们可以通过指针找到我们想要的变量。可以在函数中改变主函数中的实参。