读书人

传址报错解决方案

发布时间: 2013-11-29 13:49:33 作者: rapoo

传址报错
正在学习C语言,写了一个传址的函数,直接报错
下面是代码
#include "stdio.h"

int Add(int & a)//int &a,初始化一个int型参数a对它地址里的数据进行操作
{
a=3;
return 0;
}

int main()
{
int b=5;
Add(b);
printf("%d\n",b);
return 0;
}

异常为


1>------ 已启动生成: 项目: test, 配置: Debug Win32 ------
1> Test.c
1>c:\users\administrator\documents\visual studio 2010\projects\test\test\test.c(3): error C2143: 语法错误 : 缺少“)”(在“&”的前面)
1>c:\users\administrator\documents\visual studio 2010\projects\test\test\test.c(3): error C2143: 语法错误 : 缺少“{”(在“&”的前面)
1>c:\users\administrator\documents\visual studio 2010\projects\test\test\test.c(3): error C2059: 语法错误:“&”
1>c:\users\administrator\documents\visual studio 2010\projects\test\test\test.c(3): error C2059: 语法错误:“)”
1>c:\users\administrator\documents\visual studio 2010\projects\test\test\test.c(12): warning C4013: “Add”未定义;假设外部返回 int
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

[解决办法]
int Add(int & a)// & 是c++的引用操作,

要写成:
int Add(int *a)
{
*a = 3;
return 0;
}

调用处改成:
Add(&b);
[解决办法]


#include <stdio.h>

/** 这里用&是C++的引用,C语言是不支持的,可以改用指针来实现 */
int Add(int* a)
{
*a = 3;
return 0;
}

int main(int argc, char* argv[])
{
int b = 5;
Add(&b);/* 这里调用的时候由于是指针,所以要传入b的地址 */
printf("%d\n", b);
return 0;
}

读书人网 >C语言

热点推荐