关于函数的指针参数
2013-03-20 12:02
489 查看
/article/2780947.html
先做一道题目:
[c-sharp]
view plaincopyprint?
#include <stdio.h>
int f(int *p)
{
static int i = 5;
p=&i;
return 0;
}
int main(void)
{
int *p;
f(p);
printf("p = %d/n",*p);
return 0;
}
该程序的输出结果是多少?
执行结果:
&i = bfffe924
p = bfffe924
*p = 1
&p = bfffe920
解析:
指针占4Byte,存放着它所指向的数据的地址。P是一个指向int型变量i的指针,所以p表示该指针的内容,也就是i的地址;*p表示p指向的内容,就是i;&p代表指针p本身的地址。
再看第一道题,main函数里的p和f函数的参数p都是指向int型的指针,当main函数调用f函数时:f(p),传递给f函数的是main函数中的p的内容,因为p没有初始化,所以它的内容是一个不确定的地址,所以,f函数中的p指向了这个不确定地址。
怎样才能让main函数中的p指向f函数中的静态变量i呢?
将程序做如下修改即可:
[cpp]
view plaincopyprint?
#include <stdio.h>
int f(int **p)
{
static int i = 5;
*p=&i;
return 0;
}
int main(void)
{
int i=0x01;
int *p=&i;
f(&p);
printf("p = %d/n",*p);
return 0;
}
先做一道题目:
[c-sharp]
view plaincopyprint?
#include <stdio.h>
int f(int *p)
{
static int i = 5;
p=&i;
return 0;
}
int main(void)
{
int *p;
f(p);
printf("p = %d/n",*p);
return 0;
}
该程序的输出结果是多少?
该程序的输出结果是多少? ============================================== 有人会认为输出的是“p = 5”,其实应该是一个不确定的数。 为了弄清为什么,先看下一个例子: [cpp] view plaincopyprint? #include <stdio.h> int main(void) { int i=0x01; int *p=&i; printf("&i = %x/n",&i); //i的地址 printf("p = %x/n",p); printf("*p = %x/n",*p); printf("&p = %x/n",&p); return 0; } #include <stdio.h> int main(void) { int i=0x01; int *p=&i; printf("&i = %x/n",&i); //i的地址 printf("p = %x/n",p); printf("*p = %x/n",*p); printf("&p = %x/n",&p); return 0; }
执行结果:
&i = bfffe924
p = bfffe924
*p = 1
&p = bfffe920
解析:
指针占4Byte,存放着它所指向的数据的地址。P是一个指向int型变量i的指针,所以p表示该指针的内容,也就是i的地址;*p表示p指向的内容,就是i;&p代表指针p本身的地址。
再看第一道题,main函数里的p和f函数的参数p都是指向int型的指针,当main函数调用f函数时:f(p),传递给f函数的是main函数中的p的内容,因为p没有初始化,所以它的内容是一个不确定的地址,所以,f函数中的p指向了这个不确定地址。
怎样才能让main函数中的p指向f函数中的静态变量i呢?
将程序做如下修改即可:
[cpp]
view plaincopyprint?
#include <stdio.h>
int f(int **p)
{
static int i = 5;
*p=&i;
return 0;
}
int main(void)
{
int i=0x01;
int *p=&i;
f(&p);
printf("p = %d/n",*p);
return 0;
}
相关文章推荐
- 再开一篇关于C++程序设计基核心之一:引用,指针,符号优先级,函数参数传递
- 关于结构指针类型数组做函数参数的一个问题#include<stdio.h>typede
- 2010.8.16 关于函数参数是指针、还是引用的区别
- 关于qsort第四个参数,函数指针作参数的一点思考
- 关于指针当做函数参数
- 关于C中函数参数,指针-常量-引用解释的4个函数例子
- 关于二维数据中的一维指针作为函数参数和返回值
- 关于函数参数为字符指针的情况
- C函数关于qsort最后一个函数指针参数指向的函数的返回值和升序排序的关系
- 关于指针作函数参数
- 一个关于函数内部指针参数返回的错误调试及分析
- 关于指针的浅析---------指针的神奇之处(函数传递参数)
- 关于用指针作为函数参数申请动态内存
- 关于指针作为函数参数的一些想法
- [C++]关于指针作为函数参数传递
- 关于用函数指针参数申请动态内存的问题
- 关于函数参数中有指针无法带出地址
- 关于指针作为函数参数传递的理解,对比普通变量作为函数参数的需注意点,其实就是行参和实参的问题。
- 关于函数的指针参数