您的位置:首页 > 其它

对指针的一点理解

2015-06-10 10:41 218 查看

对指针的理解

指针指向某一段内存。 不存在什么可以指向,什么不可以指向。

比如我想对主函数的某段内存在子函数中操作

#include <stdio.h>

/*

** 对某段内存的第一个位置赋值1

*/

void

Test( int *p )

{

*p = 1;

}

void

main ()

{

void Test( int *p );

int tray [10]; //或者int *tray = malloc( 10 *sizeof( int ) );

Test( tray );

printf( "%d\n", tray [0] );

}

//结果输出了1, 因为我的参数指向的是这段内存。

但反过来,如果在主函数中对子函数的某段内存操作,再这样执行就不行了。

比如:

void

main ()

{

void Test( int *p );

int *tray;

Test( tray );

tray [0] = 1;

printf( "%d\n", tray [0] );

}

/*

** 申请一段内存

*/

void

Test( int *p )

{

p = malloc( 10 * sizeof( int ) );

}

//结果,系统报错。

原因是 主函数中传递给子函数的是指针变量tray的内容,而形参p是一个局部变量,因此可以看作是变量tray的拷贝。 当子函数结束了,该形参会被销毁,即这个指向没有意义。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: