问题描述
你好,
有人可以告诉我为什么ret的价值是不是
甚至改变声明(* ret)+ = 26; 。 printf语句
两次打印相同的ret值。
另外当我在gcc上运行这个程序时它正常执行但是相同的
程序在MS visual studio .Net上崩溃。
#include< stdio.h>
void funct(int a,int b ,int c)
{
char buf [5];
char buf1 [10];
int * ret;
ret = buf + 12;
printf(" ret is%x \ nn" ret);
( * ret)+ = 26;
printf(" ret is%x \ nn" ret);
return;
}
int main(无效)
{
int i;
i = 0;
功能(1,2,3);
i = 34;
printf("%d \ n",i );
返回0;
}
hello,
Can somebody please tell me that why the the value of "ret" is not
changing even by the statement (*ret)+=26; . The printf statement
prints the same value of ret both the times.
Also when I ran this program on gcc it executed normally but the same
program crashed on MS visual studio .Net.
#include <stdio.h>
void funct(int a ,int b,int c)
{
char buf[5];
char buf1[10];
int *ret;
ret=buf+12;
printf("ret is %x\n",ret);
(*ret)+=26;
printf("ret is %x\n",ret);
return ;
}
int main(void)
{
int i;
i=0;
funct(1,2,3);
i=34;
printf("%d\n",i);
return 0;
}
推荐答案
-
pete
--
pete
你没有使用任何函数的论据。
Christian
You have not used any of the function''s arguments.
Christian
这篇关于指针问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!