Fed*_*ile 4 c pointers function
我刚刚学了指针,我写了一个非常简单的程序来检查我理解的是否正确; 我的想法是创建一个简单的函数,它将输入作为整数值并返回其地址.
即使这应该是地球上最简单的事情,我在编译后会得到一条警告信息,我不知道为什么......
#include <stdio.h>
#include <stdlib.h>
// returnType functionName(type arg1, type arg2)
int* return_me(int);
int main(){
int x = 1;
int *p;
p = &x;
printf("p: %p\n", p);
p = return_me(x);
printf("p: %p\n", p);
return 0;
}
int* return_me(int num){
return #
}
Run Code Online (Sandbox Code Playgroud)
我应该得到相同的结果,但我不...我在哪里弄乱?
这是警告:
pointers.c: In function ‘return_me’:
pointers.c:21:2: warning: function returns address of local variable [-Wreturn-local-addr]
return #
Run Code Online (Sandbox Code Playgroud)
这条线
p = return_me(x);
Run Code Online (Sandbox Code Playgroud)
正在为函数中x的变量赋值num,类似于:
int num = x ;
p = &num ;
Run Code Online (Sandbox Code Playgroud)
num 是一个不同的变量,并具有不同的地址.
另请注意,当您从函数返回其地址时,本地变量num不再存在,并且未真正定义打印其地址.
像这样的东西:
int* return_me( int* pnum )
{
printf("%d" , *pnum ) ;
return pnum ;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
362 次 |
| 最近记录: |