#include<stdio.h>
void func(char *c)
{
c=c+2;
}
void main()
{
char *s="mincomputer";
func(s);
puts(s);
}
這個程序的輸出的為什么還是mincomputer而不是incomputer呢?
3 回答
已采納

望遠
TA貢獻1017條經驗 獲得超1032個贊
#include<stdio.h>? void?func(char?*c) ?{ ?????*c=*(c+2);? ?}? ?void?main()? ?{? ?????char?*s="mincomputer";? ?????func(s);? ?????puts(s); ?}
ps這才是你想要的結果,c=c+2;僅僅是將指針變量c的指向往后移了兩個字符,指向了字符串的第三個字符,并沒有修改原數(shù)據(jù)。
? ? ? ? ? ? ? ? ? ? ? ? ? ?

Yexiaomo
TA貢獻152條經驗 獲得超157個贊
很明顯不會改變的,?
在 main函數(shù)中,你定義了 char * 類型
但是你在 func函數(shù)的參數(shù)類型中 也定義了 char * 類型
傳參數(shù)時,僅僅是復制一份,并未把地址傳過去
修改后代碼如下
#include<stdio.h>? void?func(char?**c)?{? *c=*c+1; }? int?main()?{? char?*s="mincomputer";? func(&s);? puts(s);? return?0; }
點擊展開后面2條
- 3 回答
- 1 關注
- 1174 瀏覽
添加回答
舉報
0/150
提交
取消