c语言指针问题 从键盘输入两个数,让它们相加。

#include
int add(int,int);
main()
{
int x,y,z;
int *p,*q;
p=&x,q=&y;
printf("enter x and y");
scanf("%d%d",&x,&y);
z=add(*p,*q);
printf("%d",z);
}
int add(int *a,int *b)
{
int sum;
sum=*a+*b;
return sum;
}
上面程序编译没有错误,但是执行的时候会有下面的提示:
a.obj : error LNK2001: unresolved external symbol "int __cdecl add(int,int)" (?add@@YAHHH@Z)
Debug/A.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.

各位老师给解答一下,这是为什么呀??

####要理解指针

  • 指针其实也是一种占4个字节(32位操作系统)的数据类型,其中存储的值是指向的内存首地址

####符号* 对与指针的含义有两种

  • 一种是在定义指针的时候 int * p = NULL
  • 一种是取值的时候 *p 取得指针p指向的内存的值

####指针存在的最大意义是间接赋值

  • 函数传入变量的地址,函数内部就可以根据这个指向变量地址的指针来间接改变函数外部变量的值



| 表头 | 表头 | 表头 | 表头 | 表头 | 表头 | 表头 | 表头 | 表头 | 表头 |
| ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ |
| 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 |
| 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 |
| 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 |
| 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 |
| 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 |
| 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 | 单元格 |

将这一句代码:
int add(int,int);
改成:
int add(int *,int * );

再将
z=add(*p,*q);
改成:
z=add(p,q);

 z=add(*p,*q);