マガジンのカバー画像

C言語

63
C言語に関するあれこれ
運営しているクリエイター

#ポインタ

私がC言語を好きな理由 ポインタ変数が必要なデータ構造って?

私がC言語を好きな理由 ポインタ変数が必要なデータ構造って?

前回の続きである。

その前回において、

ポインタを持たないプログラミング言語でもポインタは使っているはずだ

と書いた。ポインタを使った方がシンプルで高速で汎用的になる構造というのがある。が、前回はそれを書かなかった。今回はそれを書いてみようかと思う。

例えば、配列例えば、ここに1つの配列があるとする。

char data[20] = {0, 4, 7, 8, 13, 14, 26};

もっとみる
私がC言語を好きな理由

私がC言語を好きな理由

私がC言語を好きな理由。

ポインタ変数があるから

これにつきる。
C言語しか使っていなかった当初はわからなかったが、いくつかの言語に触れる都度、ポインタ変数が欲しくなる。やりたいことができない。もどかしいことこの上ない。どうも私は、何か制約があるのが苦手なようである。

ポインタを持たない言語たちjavaにも、VBにも、C#にも、Pythonにもポインタ変数はない。ないのではあるが、ポインタ変

もっとみる
C言語教室 第34回 - 型修飾子あれこれ(回答)

C言語教室 第34回 - 型修飾子あれこれ(回答)

こちらの記事の課題回答です。

なんだか、いきなり第34回まですっとばしてしまった気もするけど。

課題char s[] = “abcdefg”;const char *p = s;char * const q = s;

このとき、pとqで何が違うのかを説明しなさい。

回答p はポインタの先のデータを変更できなくて、
q はポインタそのものを変更できない。

コードで書くとこんな感じ。

in

もっとみる
【C言語】ポインタ変数に「const」を付けよう!

【C言語】ポインタ変数に「const」を付けよう!

C言語にはポインタ変数というものがあります。

ポインタについてはこちらもどうぞ。

char x = 13; // ←①char* px = &x; // ←②

と書くと、次のようにメモリを確保します。

もう一つ、「*px」はここを指します。

この絵からもわかる通り「px」というシンボルから2つのデータをアクセスすることができます。

1つは「0x075BCD16」。
そしてもう1

もっとみる
C言語教室 第19回 - 単方向リスト(回答提出)

C言語教室 第19回 - 単方向リスト(回答提出)

こちらの記事の課題と演習の回答です。

プログラムには基本的なデータ構造がいくつかあります。スタックやキューなどが有名ですが、リスト構造もその一つです。今回はこの「リスト構造」に関する課題演習です。

「基本的なデータ構造」というのは、「汎用的なプログラムにできる」ということを意味します。この「汎用的」というのはプログラムにとっては永遠の課題のようなもので、「これでもか!」というくらい汎用的に作っ

もっとみる
【C言語】ポインタ ~ポインタを使って関数から情報を取得してみる ~

【C言語】ポインタ ~ポインタを使って関数から情報を取得してみる ~

前回、ポインタの概要について説明してみました。

では、ポインタはどんな風に使うのでしょうか。

「関数の引数」です。

こんな関数を考えてみましょう。

「2つの変数を足し算する関数」
(ありがちだなぁ(苦笑))

引数は2つ。
足し算した結果は戻り値で返しましょうか。
こんな感じです。

int add(int a, int b){ return (a + b);}

これは、ポイ

もっとみる
【C言語】ポインタのことを説明してみましょう

【C言語】ポインタのことを説明してみましょう

コンピュータにはメモリが必要です。メモリにデータを格納し演算することで、様々な動作を実現します。

メモリにはアドレスが割り振られています。
こんな感じ。

例えば、プログラムで

char x = 13;

と書くと、空いているメモリから1バイト確保して割り当てます。

「x」はメモリの中の値で、
「&x」はそのアドレスです。

C言語にはさらに、ポインタ変数というものがあります。
「char」

もっとみる