iT邦幫忙

2021 iThome 鐵人賽

DAY 28
0
Software Development

0基礎也看得懂的程式設計-30天學會C語言系列 第 28

30天學會C語言: Day 27-指標當參數

函式沒辦法使用其他函式中的變數

#include <stdio.h>
#include <stdlib.h>

void fun(int x) {
    x = 100;
    printf("%d\n", x);
}

int main() {
    int x = 10;
    fun(x);
    printf("%d\n", x);

    return 0;
}

因為函式和函式間傳遞的是 ,其他的函式只能知道變數值而不知道變數的位置,所以 fun() 沒辦法改變 main() 的值

如果要讓其他的函式更改變數的值,就需要以指標作為傳遞的資料
scanf() 的功能是改變變數值,所以丟給 scanf() 的變數要加上 &

指標參數

和宣告變數一樣,在參數名稱前加上 * 代表指標

#include <stdio.h>
#include <stdlib.h>

void fun(int *x) {
    *x = 100;
    printf("%p\n", x);
}


int main() {
    int x = 10;
    fun(&x);
	printf("%p\n", &x);

    return 0;
}

* 是取值運算子,可以取得指標指向的變數

#include <stdio.h>
#include <stdlib.h>

void fun(int *x) {
    printf("%d\n", *x);
}


int main() {
    int x = 10;
    fun(&x);

    return 0;
}

透過 * 可以指派其他函數中的變數

#include <stdio.h>
#include <stdlib.h>

void fun(int *x) {
    *x = 100;
    printf("%d\n", *x);
}

int main() {
    int x = 10;
    fun(&x);
    printf("%d\n", x);

    return 0;
}

fun() 執行後 main() 中的 x 被改成100


上一篇
30天學會C語言: Day 26-變數住哪裡
下一篇
30天學會C語言: Day 28-指標&陣列
系列文
0基礎也看得懂的程式設計-30天學會C語言30

1 則留言

0
juck30808
iT邦新手 3 級 ‧ 2021-10-14 12:13:30

恭喜即將邁入完賽~/images/emoticon/emoticon08.gif

我要留言

立即登入留言