关于函数里对指针赋值的问题
2011-04-29 14:56
363 查看
#include <stdio.h>
#include <stdlib.h>
void test(int* a,int* b)
{
b = a;
}
int main(void)
{
int *a,*b=NULL;
int c = 2;
a = &c;
//b = a;
test(a,b);
if(b)
printf("aaaaaaaaaaaaa:%d\n",*b);
else
printf("bbbbbbbbbbbb\n");
}
为什么在函数test赋值之后b还是null?
毛病出在函数test中。编译器总是要为函数的每个参数制作临时副本,指针参数p的副本是 _p,编译器使 _p = p。如果函数体内的程序修改了_p的内容,就导致参数p的内容作相应的修改。这就是指针可以用作输出参数的原因。
正解:
#include <stdio.h>
#include <stdlib.h>
void test(int** a,int** b)
{
*b = *a;
}
int main(void)
{
int *a,*b=NULL;
int c = 2;
a = &c;
//b = a;
test(&a,&b);
if(b)
printf("aaaaaaaaaaaaa:%d\n",*b);
else
printf("bbbbbbbbbbbb\n");
}
#include <stdlib.h>
void test(int* a,int* b)
{
b = a;
}
int main(void)
{
int *a,*b=NULL;
int c = 2;
a = &c;
//b = a;
test(a,b);
if(b)
printf("aaaaaaaaaaaaa:%d\n",*b);
else
printf("bbbbbbbbbbbb\n");
}
为什么在函数test赋值之后b还是null?
毛病出在函数test中。编译器总是要为函数的每个参数制作临时副本,指针参数p的副本是 _p,编译器使 _p = p。如果函数体内的程序修改了_p的内容,就导致参数p的内容作相应的修改。这就是指针可以用作输出参数的原因。
正解:
#include <stdio.h>
#include <stdlib.h>
void test(int** a,int** b)
{
*b = *a;
}
int main(void)
{
int *a,*b=NULL;
int c = 2;
a = &c;
//b = a;
test(&a,&b);
if(b)
printf("aaaaaaaaaaaaa:%d\n",*b);
else
printf("bbbbbbbbbbbb\n");
}
相关文章推荐
- 关于动态存储分配函数的调用,在已经过排序的数组中查找及删除内容的操作,余数的分析,删除字符数组中的空格,对链表的逆置,在源字符串中查找子字符串的个数,函数指针以及函数的调用,循环赋值带来的问题以及插入
- 关于含有指针成员的类的对象之间赋值指针的问题。
- C++关于函数声明和定义中参数赋值为0调用问题演示
- 关于类的静态成员函数指针的问题
- 关于指针结构体函数中指针变量的赋值&的问题思路
- 关于局部指针变量 函数调用后 该指针的问题
- [笔试题 2][c/c++]关于指针直接赋值问题
- 关于指针的赋值问题
- 关于指针函数和函数指针的问题(一)
- 关于类成员函数指针的调用问题
- 关于函数字符数组调用的问题(没有搞清指针的概念)
- 关于函数指针的问题
- 关于 将一个数组赋值给另外一个数组会重置原来数组的指针 的问题
- ads中关于函数指针转换的很奇怪的问题
- 指针作为函数的形参,给指针所在地址赋值问题
- 关于二维数组地址和指针之间赋值的问题
- [笔试题 2][c/c++]关于指针直接赋值问题
- <C语言>关于函数返回值是指针,取不到值的问题研究
- 关于用函数指针参数申请动态内存的问题
- C++中 关于结构体中有char *类型的指针 赋值问题