ポインタで分からないことがあります。
void swap(int* x, int* y){
int tmp;
tmp = *x;
*x = *y;
*y = tmp;
}
/*
int main(){
int *pA,*pB;
*pA=5;
*pB=10;
cout << *pA << " , " << *pB <<"\n";
swap(pA,pB);
cout << *pA << " , " << *pB <<"\n";
}
*/
int main(){
int a,b;
a=5;
b=10;
cout << a << " , " << b <<"\n";
swap(&a,&b);
cout << a << " , " << b <<"\n";
}
上のメイン関数ではエラーが起きます。どうしてなんでしょう?
下のと意味は同じだと思うのですが・・・
No.3
- 回答日時:
<br /> どこの場所も指していない、というのは不正確です。<br /> 正確には「どこを指しているかわからない」です。<b
この場所も指していない、というのは、pA = NULL;
pB = NULL;
の場合です。
今回、pAとpBは関数内部のローカル変数です。
したがって、定義時に何が入っているか(つまり、どこを指しているか)は保証できません。
No.2
- 回答日時:
ポインタは、「場所」を記憶しているものです。
それは、お解かりでしょうか?
「int *pA,*pB;」と宣言したタイミングでは、
pA,pBがどこの場所も指していない状態になっています。
なので、*pA=5;と言われても、どこに5を代入するんだよ??
って、エラーになります。
「int a,b;」 は、aとbをどこかの場所に置く。という意味です。
&aと書くことで、どこに置いたのか?を取得できます。
int a,b
int *pA,*pB;
pA=&a;
pB=&b;
*pA=5;
*pB=10;
とすると、a,bがどこかに置かれて、
その場所が、pA,pBに代入されるので実行できます。
No.1ベストアンサー
- 回答日時:
全く違います。
int *pA
この時点では、pAというint型のポインタが作成されるだけ。で、そのポインタには何も代入されていないのでどこも指し示していないのです。int型の変数は存在していません。
int a;
int *pA;
としてから
pA=&a;
とすれば、pAにaのアドレスが代入されるので*pAが求められますけど、pAに何も代入されていない状態では*pAはもとめられません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# C++初心者です stirng 2 2022/09/20 20:43
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# ポインタの型変換、どうやるんでしたっけ? 2 2022/03/28 11:00
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- JavaScript jQueryでのレスポンシブが綺麗に動かない 3 2022/06/21 11:08
- C言語・C++・C# C pointer? or... 2 2022/03/29 00:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「指定されたキャストは有効で...
-
複数桁10進数の*桁目だけを抽出...
-
#define _CRT_SECURE_NO_WARNIN...
-
C言語での引数の省略方法
-
(マルチスレッド)_beginthrea...
-
ラップ関数とはどんなものですか?
-
C言語でシグマで総和を求める関...
-
困ってます…nCrを求めるC言語...
-
if と配列の組み合わせ
-
【C++】関数ポインタの使い方
-
シグマ公式・・・C言語
-
nCmの関数
-
構造体の勉強中です 合計点の高...
-
卒業研究でよく分からないとこ...
-
C言語で分からないところがあり...
-
read関数をノンブロッキングで...
-
c言語
-
式は定数値が必要です」という...
-
ungetcとgetcharを使って
-
数値を入力して1からその数値ま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
「指定されたキャストは有効で...
-
C言語 配列と関数の練習問題
-
複数桁10進数の*桁目だけを抽出...
-
(int *)の意味
-
if と配列の組み合わせ
-
ラップ関数とはどんなものですか?
-
卒業研究でよく分からないとこ...
-
【C++】関数ポインタの使い方
-
c言語
-
足して100になるような乱数のア...
-
C言語初心者です、、、お助けく...
-
数字列を3桁ごとにカンマで区切...
-
C言語 エラーの原因がわからな...
-
実数の整数部,小数部の取得
-
課題でつまってます・・・
-
商と剰余を同時に求める(C言語)
-
C言語の配列をC++のvectorに高...
-
std::set<int> で、ある値が何...
おすすめ情報