私らすとさん、今ポインタ変数の前にいるの…

らすとさん
記事: 5
登録日時: 13年前
住所: 福岡

私らすとさん、今ポインタ変数の前にいるの…

投稿記事 by らすとさん » 12年前

正直理解出来るのに時間掛かりそうです。
ここまでなんとかかんとかやってきましたが、これで躓く人が多いといろんな場所で見かけますし、第一メモリなんてPCのスペックの一部としてしか考えたことなかったですし…
アドレス?メールの?そんな感じです。
それでもこれを越えたら良いことはありそうな予感。

超絶右留斗羅天才プログラマー
記事: 44
登録日時: 12年前

Re: 私らすとさん、今ポインタ変数の前にいるの…

投稿記事 by 超絶右留斗羅天才プログラマー » 12年前

自分がポインタを覚えようと思ったきっかけは、自作ゲームの処理速度がやたら重たくて、どうしても軽くしたいってなった時に、
ポインタの利点についてあれこれ学びましたね(*´▽`*)

アバター
せんちゃ
記事: 50
登録日時: 15年前

Re: 私らすとさん、今ポインタ変数の前にいるの…

投稿記事 by せんちゃ » 12年前

ポインタよりも僕はwhileループのほうが躓きましたね。
真のときに抜けるんだったか偽のときに抜けるんだったかみたいな、
ややこしいですよね

らすとさん
記事: 5
登録日時: 13年前
住所: 福岡

Re: 私らすとさん、今ポインタ変数の前にいるの…

投稿記事 by らすとさん » 12年前

超絶さん
名前略してすみません、コメントありがとうございます。
何の役にたつかわかればモチベーションも上がりそうです。助かります。
処理速度ですか…かなり重要になりそうですね。
腰を据えてじっくりやっていきたいと思います。

らすとさん
記事: 5
登録日時: 13年前
住所: 福岡

Re: 私らすとさん、今ポインタ変数の前にいるの…

投稿記事 by らすとさん » 12年前

せんちゃさん
コメントありがとうございます。
While 等の条件式はわからなくなってしまいますよね。
比較の式は特に苦手で使いはじめはそれっぽいのを総当たりしてました(笑)

アバター
へにっくす
記事: 634
登録日時: 13年前

Re: 私らすとさん、今ポインタ変数の前にいるの…

投稿記事 by へにっくす » 12年前

以下が理解できるようならひとまずokかな?

CODE:

#include 

// ポインタ変数を理解するとこんなコードをかけるようになりますが…
void test_strncpy(char *dst, const char *src, int n)
{
	char *dp = NULL;
	const char *sp = NULL;
	int c = 0;
	if ( (dst == NULL) || (src == NULL) ) return;
	for ( c = 0, dp = dst, sp = src; (*sp) && c < n-1; *dp++ = *sp++, c++ );
	*dp = '\0'; // 最後にヌル文字
}


int main(void)
{
	char abc[256] = {0}; // 255バイト+ヌル文字分
	const char *sz = "私らすとさん、今ポインタ変数の前にいるの。";
	test_strncpy(abc, sz, 6 + 1);
	printf("6バイト分:%s\n", abc);
	test_strncpy(abc, sz, 255 + 1);
	printf("255バイト分:%s\n", abc);
}
実行結果:

CODE:

6バイト分:私らす
255バイト分:私らすとさん、今ポインタ変数の前にいるの。
最後に編集したユーザー へにっくす on 2013年6月21日(金) 05:33 [ 編集 6 回目 ]

らすとさん
記事: 5
登録日時: 13年前
住所: 福岡

Re: 私らすとさん、今ポインタ変数の前にいるの…

投稿記事 by らすとさん » 12年前

へにっくすさん
コメントありがとうございます。
まだいまのところ全くわかっておりません…
アスタリスクが付く場合と付かない場合で混乱してます。
指標になるような課題をいただけるとか本当に感謝します!
このコメントは何度も読み返させていただきます、ありがとうございます。

アバター
Hiragi(GKUTH)
記事: 167
登録日時: 15年前

Re: 私らすとさん、今ポインタ変数の前にいるの…

投稿記事 by Hiragi(GKUTH) » 12年前

ポインタ?あぁそいつなら俺の隣にいるよ、当時の俺は理解するのに挫折を含めて数年かかったよ、いやーほんとにメモリ内のアドレスと表す値、なんて
面倒な機能つけたなとは思った、でも使えると結構使えるので覚えてみて損はないはず!
へにっくすさんのあのソースは私らすとさん...の文字列を6バイト分と255バイト分だけ表示してるんだと思う
6バイトで三文字しか表示できないって言うことは一文字2バイトってこと(最後以外で)、
あとは配列要素に足し算で+1がその型のサイズを表すとか・・・とりあえず理解するのに死にそうになるのでゆっくりでもいいから理解していくといいと思います、

まずはもっと簡単なものから理解して言ったらいいと思います!

追記:
なんかへにっくすさんマニアックな書き方してるような気がする・・・for内に処理書いたことなんて無いなぁ・・・
最後に編集したユーザー Hiragi(GKUTH) on 2013年6月21日(金) 19:56 [ 編集 1 回目 ]

らすとさん
記事: 5
登録日時: 13年前
住所: 福岡

Re: 私らすとさん、今ポインタ変数の前にいるの…

投稿記事 by らすとさん » 12年前

ということはあなたの斜め前に私が…
コメントと解説ありがとうございます。
確かにかなり難航しています。イメージはわきますが、実際の書き方で悩みます。特に配列の場合になると…
マルチバイト文字はまだ全く手付かずなので
噛み砕きながらゆっくり理解を深めていきたいと思います。