200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > c语言中什么是指针 什么是指针变量 C语言指针是什么?

c语言中什么是指针 什么是指针变量 C语言指针是什么?

时间:2019-01-03 08:24:51

相关推荐

c语言中什么是指针 什么是指针变量 C语言指针是什么?

代码清单 1:自定义函数交换两个变量的值(错误的解决方法)

#include

#include

/*--自定义函数:交换两个变量的值--*/

void swap(int a, int b)

{

int temp;

temp = a;

a = b;

b = temp;

}

/*--主函数--*/

int main( )

{

system("color 70");

int dA, dB;

puts("请输入两个整数:");

printf("整数dA:");

scanf("%d",&dA);

printf("整数dB:");

scanf("%d",&dB);

swap(dA,dB);

puts("互换以后的变量值:");

printf("dA=%d dB=%d\n",dA,dB);

system("pause");

return 0;

}

运行结果为:

请输入两个整数:

整数dA:10

整数dB:8

互换以后的变量值:

dA=10 dB=8

在代码清单 1 的程序中,main( ) 函数调用 swap( ) 函数时,实参 dA、dB 的值分别传给形参 a 和 b(值传递),在 swap( ) 函数内变量 a 和 b 的值进行了互换。但是,变量 a 和 b 只是实参变量 dA、dB 的副本,变量 dA、dB 本身的值并没有改变。因此,在此代码中使用函数并没有实现变量 a 和 b 的值的交换(见图 1)。

图 1:函数中形参变量值的改变并不影响实参变量的值

为了解决这个问题,我们可以使用 C语言提供的指针(pointer)。指针实质上是一个变量,该变量里面存储的是某个特定变量在内存中的地址,我们把它表述为指向该特定变量的指针变量(指针),该指针变量的类型与它指向的变量的类型一致。

变量是计算机内存中存储数值的“小房子”,这些小房子在内存空间中并不是杂乱无章地随便放置的,而是如图 2b) 所示,有序排列在内存空间中的。这些存放在内存空间中的变量我们统称为对象。变量(对象)在内存空间中的存放位置就是其内存地址。在 C语言中,我们可以用取址运算符&获取一个变量(对象)的内存地址(十六进制数)。

图 2:内存中的变量(对象)

代码清单 2:用取址运算符 & 获取变量(对象)的内存地址

#include

#include

int main( )

{

system("color 70");

int a, b, dA, dB;

printf("a 的地址:%p \n", &a);

printf("b 的地址:%p \n", &b);

printf("dA的地址:%p \n", &dA);

printf("dB的地址:%p \n\n\n", &dB);

system("pause");

return 0;

}

运行结果为:

a 的地址:0060FEFC

b 的地址:0060FEF8

dA的地址:0060FEF4

dB的地址:0060FEF0

在代码清单 2 中,变量 a,b,dA,dB 在内存中的地址可分别用 &a、&b、&dA、&dB 获取(见图 3)。用 printf( ) 函数显示变量地址时要用转化字符%p。

图 3:取址运算符 & 的运用

知识点总结

指针实质上是一个变量;

指针变量的类型与它指向的变量的类型一致;

指针变量里面存储的是它指向的变量在内存中的地址。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。