① c語言指針參數問題
因為p的類型是char*
*p的類型是char
a()需要的參數是char*
所以需要傳入的是p而不是*p
② ★C語言 指針作函數參數
首先說明一下,你這段代碼差一個}
應該是
#include
void fun(char *c,int d)
{
*c=*c+1;d=d+1;
printf("%c,%c,",*c,d);
}
main()
{
char b='a',a='A';
fun(&b,a);
printf("%c,%c\n",b,a);
}
在fun中的輸出,可以說明是對兩個參數作了增一操作*c=*c+1; 說明是對指針指向的內容作+1操作,會影響函數外c指向的內空變化;而d=d+1隻是表示對d這個參數作+1操作,不會對函數外的實際參數變化。
所以第一次輸出的兩個數是b,B 而第二次輸出的應該是b,A.
%e表示按科學記數法輸出浮點數,用在這里是錯誤的。應該是%c.
所以正確的答案應該是b,B,b,A
③ C語言用指針作函數參數
選D
因為第一個參數是地址傳遞,fun(&b,a);中傳入a字元。*c=*c+1將c的值變為b字元。主函數的值改變。
第二個參數是值傳遞,所以在函數中d的值為B字元。但是並不影響主函數的值,所以主函數輸出a的值是A。b的值是b。
④ C語言用指針作函數參數
選D
因為第一個參數是地址傳遞,fun(&b,a);中傳入a字元。*c=*c+1將c的值變為b字元。主函數的值改變。
第二個參數是值傳遞,所以在函數中d的值為B字元。但是並不影響主函數的值,所以主函數輸出a的值是A。b的值是b。
⑤ C語言的指針作函數參數
改成下面代碼看看:
#include<stdio.h>
voidabc(int*i,int*j)
{
intm;
m=*i;//指針變數的值也就是地址不能賦值給一般變數
*i=*j;//*i,*j才是指針變數指向的變數的值
*j=m;
}
voidmain()
{
inta,b;
int*pa=&a,*pb=&b;
printf("請輸入a,b的值:");
scanf("%d,%d",&a,&b);
abc(pa,pb);//
printf("a=%d b=%d ",a,b);
}
⑥ c語言指針型參數問題
createList_L函數定義有問題,它輸入的參數是指針L的值,
函數內部對L賦值,並不會對L本身產生作用
應該是createList_L(LNode **L, int n)
然後*L=(LinkList)malloc(sizeof(LNode));
main函數中這樣調用createList_L(&L, 1);
可以體會下兩種寫法的區別,然後搜索下「函數 傳值 傳地址」
⑦ C語言指針參數
改變形參position的值不會影響實參p,這是典型的傳值調用,形參只是實參的副本而已
⑧ C語言指針作為函數參數
#include<stdio.h>
int*fmax(int*,int*);/*函數的聲明和下面的定義參數類型不一致,應該改成指針類型*/
voidmain()
{
intx,y;int*c,*d;
int*pmax;
scanf("%d%d",&x,&y);
c=&x;
d=&y;
pmax=fmax(c,d);
printf("max=%d ",*pmax);
printf("max=%d ",*pmax);
}
int*fmax(int*a,int*b)
{
int*p;
p=*a>*b?a:b;
returnp;
}
⑨ C語言 指針做參數
一看就知道是個初學者吧,就按照你自己的思路,給你解釋一下編譯出錯的信息吧。
錯誤1: password沒定義,某些編譯器要求將要調用的函數在前面聲明,或將該函數定義在主函數之前。 解決方法兩種:1。在main()之前加上一句 int password(char *,char *);
2. 將
int password(char *p,char *q)
{ int a;
。。。。。。
}
整個放到 main()之前。
錯誤2~5: strcmp(*m,*n) 應該換成strcmp(m,n), m,n已經定義為字元指針,理解為字元串。而*m,*n則是兩個字元串的第一個字元。
⑩ c語言中指針作函數的參數是怎麼回事有點不懂!!!
如果使用指針作為參數就是地址傳遞,否則只是值傳遞。你可以看下下面的這個函數:
void modify(int a)
{
a++;
}
void main()
{
int a=5;
modify(a);
printf("%d",a);
}
這個程序的答案還是5。為什麼?
因為當調用modify(a)時,在執行modify函數時,是另外開辟了一個內存空間,將main中a的值復制過來,modify函數中所有的操作都是相對於這個新開辟的內存空間而言的,對原來的a沒有任何改變。
現在就來說說指針,如果用指針傳參的話那就完全不一樣了,指針(pointer),說白了即是指向變數內存地址。同樣上面的例子:
void modify(int * a)
{
(*a)++;
}
void main()
{
int a=5;
modify(&a);
printf("%d",a);
}
這個答案當然是6
因為你傳進去的是a的地址,所以在modify函數中的操作都是對a地址上的內容進行操作,即是操作a所以modify函數不用返回這個數,main中a的值也會改變。因為大家都是操作同一個內存空間,而上面不用指針,modify操作的是另一個新開辟的內存空間,只是這個內存空間初始值和a一樣。
你在子函數中要對你的主調用函數中變數進行操作時也可以用指針做參數,這樣子函數就可以不用return 如果不是用指針的話,就要再子函數的未尾加上一條return x;把這個數返回當返回值。