本文介绍了指针问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好,

有人可以告诉我为什么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



这篇关于指针问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-22 05:18