No.3ベストアンサー
- 回答日時:
基本的な説明は、ポインタとは、アドレスのことで、配列は、ある変数の要素のあつまりを意味します。
Ex) 文字列100バイトの変数(str)があります。
● 配列 char str[100];
charの要素のデータが100個連続して領域を確保した。
実際は、100バイトの領域が確保されている。 100バイトの領域
● ポインタ char *str;
charの要素で扱う領域の先頭ポインタの変数をstrとして定義した。
実際は、文字列の先頭アドレスを格納さる領域が確保されている。 32bitマシンでは4バイトの領域
ポインタと配列はしまう場所は同じなのでしょうか?
A.基本的には、正解です。 但し、プログラミングの内容によっては、異なります。
Ex) 文字列100バイトの変数(str)があります。
このstrに文字をセットする場合は、下記の方法があります。
char str[100]; 配列
char *strp; ポインタ
●配列の場合
str[0] = 'A'; 配列strの0番目に'A'をセット
str[1] = 'B';
str[2] = 'C';
●ポインタの場合
memcpy(str, "ABC", 3);
☆ memcpyの引数1の属性はポインタです。
配列の名称を引数に指定した場合は、自動的にポインタ扱いです。
又は
*strp = (char *)str;
strp = 'A' strpが指すポインタに'A'をセット
(strp+1)= 'B' strpが指すポインタ+1に'A'をセット
(strp+2) = 'C'
上記のプログミングで、最終結果は同じとなります。
単にしまい方、呼び出し方が違うだけなのでしょうか?
A.基本的には、正解です。 但し、プログラミングの内容によっては、異なります。
ポインタと使えるところでは配列も使えるのでしょうか?
A.基本的には、正解です。 但し、プログラミングの内容によっては、異なります。
そもそもしまわれる場所って何処なのでしょうか?
A.『その領域にセットされる値』と考えて大丈夫です。
No.4
- 回答日時:
ポインタと配列はソースコード上の記述では交換可能なケースも多いですが、全くの別物です。
ポインタはレーザーポインタのように「指すもの」ということで、では何を指すのかと言えば「確保済みのメモリ」です。
従って、ポインタは宣言しただけでは使用できず何かしらのメモリ領域情報を与えてやらなければなりません。
このとき未確保のメモリを指すことが出来ないかと言えば出来る訳ですが、その中身へアクセスしようとした瞬間にまともなOSならアプリケーションエラーを発生させます。
一方の配列は「要素の集合体を整列してアクセス可能にしたもの」であって、宣言と同時に必要な量のメモリが確保されます。
ですから、
int a[10];
a[0] = 0;
と
int *a;
a[0] = 0;
では、コンパイルはどちらも通りますが後者の書き方で作成したプログラムはこの箇所でアプリケーションエラーになります。
No.2
- 回答日時:
・ポインタと配列はしまう場所は同じなのでしょうか?
どういう意味で?
ポインタは、変数のアドレスを指す変数、です。
単独では、「変数として使用することはできません。」(という理解でいてください)
必ず、他の変数が実体としてある時に、セットで使用するものです。
配列は、変数を複数個、いっぺんに扱うための仕組みです。
場所はどちらも、メモリ上です。
・単にしまい方、呼び出し方が違うだけなのでしょうか?
いろいろ違います。
・ポインタと使えるところでは配列も使えるのでしょうか?
使えません。
・そもそもしまわれる場所って何処なのでしょうか?
しまわれる場所って何ですか?
一応、表面的な使い方だけ。
普通の変数 int v;
配列 int a[10];
ポインタ int *p;
p = &v; // ポインタにv をセットする
a = &v; // 配列にvはセットできない
p = &a[0]; // ポインタに配列の先頭番地を割り当てる
p = a; // これも可能。ポインタに配列の番地を割り当てる
a[2] = 10; // 配列として扱う
p[2] = 10; // ポインタでも、配列のようにアクセスは可能だが・・・
p = &v;
p[2] = 10; // これもできてしまうため、注意が必要
p = a;
p++; // こうすると、pはa[1]の番地がセットされる
a++; // これはできない
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 配列とポインタについて 2 2022/06/02 11:53
- C言語・C++・C# 関数ポインタの高速化のメリット 7 2023/05/05 20:15
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- C言語・C++・C# c言語 配列とポインタについて 3 2023/02/09 22:53
- C言語・C++・C# ポインタの型変換、どうやるんでしたっけ? 2 2022/03/28 11:00
- 電気・ガス・水道業 複数の積算消費電力計での配線方法 1 2022/04/04 11:04
- C言語・C++・C# C言語 ポインタ 配列 2 2022/06/02 17:29
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- 投資・株式の税金 株配当金の節税について教えてください 2 2022/06/15 16:15
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セグメントエラー
-
init関数の意味
-
Run-Time Check Failure #3とい...
-
戻り値で構造体を返すことは可...
-
C言語のポインタに直接アドレス...
-
参照型で受け取った引数をポイ...
-
構造体の削除について
-
デバイスハンドルとは?
-
ExcelVBAでのkernel32(64bit)
-
c言語のエラーについて
-
LPSTR型の初期化について
-
コンストラクタやデストラクタ...
-
C言語 ポインタと配列の違い...
-
fopne で失敗する原因
-
スコープ外でのアドレスの参照...
-
TCHAR文字列内の検索について
-
NULLポインタは0と書かなければ...
-
C++ vectorのbeginについて
-
C言語でのconstを返す関数
-
関数ポインタの高速化のメリット
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セグメントエラー
-
C言語のポインタに直接アドレス...
-
init関数の意味
-
Run-Time Check Failure #3とい...
-
fopne で失敗する原因
-
戻り値で構造体を返すことは可...
-
LPSTR型の初期化について
-
ExcelVBAでのkernel32(64bit)
-
参照型で受け取った引数をポイ...
-
ハンドル、アドレス、ポインタ...
-
ハンドルはポインタか
-
C言語でのconstを返す関数
-
デバイスハンドルとは?
-
Cで作成したDLL関数をVBから呼...
-
popenした子プロセスのプロセス...
-
c言語で任意のファイルから読み...
-
[excel vba] マウスポインタの...
-
パスからファイル名を抽出
-
プーさんのマウスポインタを教...
-
基本アルゴリズムの『返す』の...
おすすめ情報