A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
「ポインタを使ってみよう!」っていう練習問題ですね。
練習問題は自分で組まなきゃ力になりません。
まあまずは、配列使ってでも「エラトステネスのふるい」プログラムを組んじゃいましょう。
それが出来たら、配列へのアクセス部分をポインタに置き換えるだけです。
C言語において、配列とポインタは同値ですので。
int p[10000]; #intの配列 p
int *q; #intを指すポインタ q
q = &p[0]; #qにp配列の先頭アドレスを代入する
こうした時、
p[0] = 10;
*q = 10;
これはどちらも配列p[0]のメモリに10を入れるという効果があります。
p[1] = 20;
*((int *)q + 1) = 20;
これはどちらも配列p[1]のメモリに20を入れるという効果があります。
ご質問の問題なら、配列へのアクセス方法をポインタ化するだけで、いいでしょう。
ただ、ポインタと言うのはメモリ上の位置だけを指すものですから、そこは自分でメモリ確保した範囲で使わなければいけません。
メモリ確保するのが、malloc(Memory Allocation)関数、開放するのが free関数です。
q = (int *)malloc(sizeof(int) * 10000);
これで、int変数10000個分のメモリを確保できます。
開放するときは
free(q);
これだけです。
でも、きちんと開放しなければ、mallocのたびにメモリを食っていき、しまいには「メモリ不足」でエラーになってしまいます。
まあ、単発のプログラムでは、プログラム終了時にそのプログラムから malloc()で確保したメモリは自動解放されてしまうので、ほとんど悪影響は無いんですけども。
ずっと動作させ続けるプログラムだと、メモリの管理は重要になってきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# 関数ポインタの高速化のメリット 7 2023/05/05 20:15
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- その他(プログラミング・Web制作) プログラミングについて(Python) 添付した画像はC言語で簡単に作ったソースで、1つの配列に5つ 3 2022/09/10 19:15
- C言語・C++・C# 画像の画素値を変えるC言語のプログラムで指定された画像の中に白い三角形を右上に表示させるにはどのよう 3 2022/10/30 01:16
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- Ruby 初心者プログラミング 3 2022/10/12 11:31
- C言語・C++・C# C言語の質問です。 以下の命令を実行するプログラムを作りました ①文字列aとbの長さを表示 ②aとb 1 2022/04/29 15:35
- C言語・C++・C# C言語で構造体の参照渡しができません 2 2022/12/18 21:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAで質問です。離れた二...
-
C言語 配列の長さの上限
-
パイソンの
-
C言語で特定列だけを抽出して配...
-
アルファベットの配列を数字の...
-
C言語の配列のサイズ
-
配列を使わずに、変数名を動的...
-
Excel、VBAのユーザーフォーム...
-
本日までの累計を表示させたい!
-
メモリの初期値
-
【C言語】配列の中に配列を入れ...
-
構造体配列を引数とするDLL作成...
-
if文で「配列a[i]が小数ならば...
-
unsigned char の配列で途中で0...
-
配列の参照渡しで型が一致しま...
-
配列内の文字間を排他的論理和...
-
c言語乱数について
-
先頭アドレスとは何ですか?
-
【速いブラインドタッチ】手を...
-
構造体配列のポインタを引数に
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 配列の長さの上限
-
配列を使わずに、変数名を動的...
-
配列で格納したものをmsgboxで...
-
配列の参照渡しで型が一致しま...
-
C# Listを使わずに2次元配列の...
-
VBで構造体の配列を関数に渡す...
-
複数の選択範囲の行番号を個別...
-
パイソンの
-
先頭アドレスとは何ですか?
-
【速いブラインドタッチ】手を...
-
C# 配列の変数宣言について。
-
C言語初心者 ポインタについて...
-
unsigned char配列への入力の仕方
-
テキストファイルから文字列を...
-
ExcelVBAで質問です。離れた二...
-
Redimした動的配列はEraseする...
-
C言語で特定列だけを抽出して配...
-
擬似コード 長さがmの配列でな...
-
メモリの初期値
-
C言語初心者 構造体 課題について
おすすめ情報