Re: [問題] 新手C語言的call by address不太會使用
※ 引述《mqazz1 (無法顯示)》之銘言:
: 以下是我的程式碼
: #include <stdio.h>
: #include <stdlib.h>
: int val(int a, int b);
: int add(int *a, int *b);
: int main(void)
: {
: int a=5, b=10;
: int *c, *d;
//------------------------------------
: c = malloc(sizeof(int)); (1)
: d = malloc(sizeof(int)); (2)
: c = &a;
: d = &b;
(1)、(2)刪掉吧 浪費記憶體了
//------------------------------------
: printf(" a = %d\n b = %d\n*c = %d\n*d = %d\n\n", a, b, *c, *d);
: val(a, b);
: printf(" a = %d\n b = %d\n", a, b);
: add(c, d); // 非 add(&c, &d);
add(c,d) call by vaule.
add(&a,&b) 才正確
: printf("*c = %d\n*d = %d\n", *c, *d);
: system("pause");
: return 0;
: }
: int val(int a, int b)
: {
: printf("=====call by value====\n");
: a = 100;
: b = 200;
: printf(" a = %d\n b = %d\n", a, b);
: printf("=====return=====\n");
// return ??
: }
: int add(int *c, int *d)
: {
: printf("\n\n\n");
: printf("=====call by reference=====\n");
: *c = 100;
: *d = 200;
: printf("*c = %d\n*d = %d\n", *c, *d);
: printf("=====return====\n");
// return ??
: }
: 他介紹的是傳&x,用int *n接收,
: 那我寫的傳add(&c, &d),用int add(int *c, int *d)接收,
: 為什麼會不行呢?
他的是 int x,你的是int *c;
: 要用add(c, d)才不會失敗....
: 請問是怎麼回事呢?
: 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.227.180.21
推
02/28 19:55, , 1F
02/28 19:55, 1F
→
02/28 19:56, , 2F
02/28 19:56, 2F
→
02/28 19:57, , 3F
02/28 19:57, 3F
→
02/28 20:46, , 4F
02/28 20:46, 4F
→
02/28 20:47, , 5F
02/28 20:47, 5F
→
02/28 20:47, , 6F
02/28 20:47, 6F
推
02/28 23:19, , 7F
02/28 23:19, 7F
→
02/28 23:20, , 8F
02/28 23:20, 8F
→
02/28 23:21, , 9F
02/28 23:21, 9F
→
02/28 23:21, , 10F
02/28 23:21, 10F
→
03/01 01:01, , 11F
03/01 01:01, 11F
→
03/01 01:12, , 12F
03/01 01:12, 12F
推
03/01 02:40, , 13F
03/01 02:40, 13F
→
03/01 02:41, , 14F
03/01 02:41, 14F
推
03/01 02:44, , 15F
03/01 02:44, 15F
→
03/01 02:44, , 16F
03/01 02:44, 16F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):