0
#include<stdio.h>

void sq(int &b) {
    b=b+12;
}

void main() {

int a=5;
sq(a);
printf("%d",a);

}

上記のcプログラムでは機能しませんが、c++でも同じように機能します。

#include<iostream>

void sq(int &b) {
    b=b+12;
}

 int main() {

int a=5;
sq(a);
std::cout<<a;

}

変数がC++で渡される方法に違いはありますか?なぜそれはC++で動作するのですか?上記のコードはC++で参照によって渡されますか?

4

1 に答える 1

10

CとC++は異なる言語です。Cには参照がありません。

Cで参照セマンティクスが必要な場合は、ポインターを使用します。

void sq(int * b) {      // Pass by pointer
    *b = *b + 12;       // Dereference the pointer to get the value
}

int main() {            // Both languages require a return type of int
    int a = 5;
    sq(&a);             // Pass a pointer to a
    printf("%d\n", a);
    return 0;           // C used to require this, while C++ doesn't
                        //     if you're compiling as C99, you can leave it out
}
于 2012-08-29T22:08:47.417 に答える