當前位置:編程學習大全網 - 編程語言 - C語言問題。。誰來幫忙解答下啊。

C語言問題。。誰來幫忙解答下啊。

回答問題1:

妳有編譯器嗎?肯定有吧,那把下面的代碼運行遍。代碼的運行結果見附圖。

#include<stdio.h>

#include?<windows.h>

void?fun(char?*s)

{

while(*s)

{?

char?ch='s';

printf("%c進來了,它的ASCII碼為%d\n",*s,*s);

system("pause");

if(*s%2==0)?

{

printf("%c",*s);

}

s++;

}

}

void?main()

{?

char?a[]={"good"};

fun(a);

printf("\n");

system("pause");

}

回答問題2:

說實話,當初我的指針也學得混混沌沌,所以不敢保證我的解釋正確的。

首先進入源程序的定義:

int?x=3,y=5,*p=&x,*q=&y;

即指針p指向x的地址,y指向q的地址,我們假設p=0000001h這個地址

同理,我們假設p=0000002h這個地址。

然後調用fun函數

void?fun?(?int?*a,int?*b)

{

int?*c;

c=a;a=b;b=c;

}

這個函數的功能是交換a指針與b指針的值

由上假設知道a=0000001h,b=0000002h

那麽交換後a=0000002h,b=0000001h

也許妳的疑惑就在這裏了,為啥a的指針與b的指針值交換了輸出結果卻不交換呢?

因為在執行這個函數的時候是這樣執行的,如下語句,我翻譯壹遍。

a=p;

b=q;

然後交換a,b的值

則b=p?,a=q

這裏交換的確成功了,但是我們別被它誤導了,這裏只是a,b的值交換了,

p和q的值可是沒變的!!!!!

那麽我舉個例子

#include?<stdio.h>

void?fun(int?a,int?b)

{

//交換

int?c=a;

a=b;

b=c;

}

void?main()

{

int?x=1,y=2;

fun(x,y);

printf("x=%d,y=%d\n",x,y);

}

妳會發現,雖然fun函數中的a,b是交換了值,但是x,y其實根本是沒變的。

這個跟上面的題目應該是壹個道理。

同樣的fun(&x,&y);?

&x=p;

&y=q;

同理。

  • 上一篇:軟件開發是幹嘛的,難學嗎?
  • 下一篇:姜堰江淮怎麽樣
  • copyright 2024編程學習大全網