C言語入門者です。
int str_length(const *s)
{
int len=0;
while(*s ++)
len ++;
return len;
}
この関数は配列を受け取り、その配列の長さを返す関数です。この関数でwhile(*s++)という処理がありますが、なぜこの場合sに間接演算子を用いるのでしょうか?s++でやると暴走します。私はsと*sの使い分けをはっきり理解していません。
具体的に教えてくださいm(_ _)m
No.1ベストアンサー
- 回答日時:
>私はsと*sの使い分けをはっきり理解していません。
ポインタの勉強をしてみては?
https://qiita.com/lrf141/items/a3e96b315dd4f0850 …
そうすれば理解できると思います。
No.3
- 回答日時:
すいません。
逆におしえて欲しいのですが、const *s って書くとsは何バイトのデータポインタになるの?No.4
- 回答日時:
ふる~い C だと const *s を const int *s と解釈したりしますけどね>#3.
さておき, 「私はsと*sの使い分けをはっきり理解していません。」というなら, #1 でも言われているように「はっきり理解」すべきです... というか, これが理解できていない人間にどう説明しろと?
私は内部での処理を深く理解できていませんでした。(配列との相違など)ですが、誰も質問の本質に触れていただけませんでしたので、先程グラフィカルな説明をみて理解しました。
特に意味を持たない返信はやめていただきたい。現時点であなたは僕よりも優秀なのだから、自分が時間を無駄にしていることくらいわかっているでしょう。私もネガティブな感情になり、ストレスにしかなりません。お互いに利がないので余計なことはやめて下さい。C言語の先輩さん。
No.5
- 回答日時:
であれば、sはメモリアドレスなので、開発環境のビット数(32bitなら、4バイト)のデータで、*sはそのアドレスの場所にある1バイトのchar型のデータです。
*s++は、うしろに++がついているので、*sでchar型のデータ中身をみた後で、sをsizeif(char)(つまり1バイト)だけインクリメントする(アドレスを後ろにずらす)ということです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# C言語 3 2022/10/04 15:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字列内の数字削除
-
SetWindowTextについて。
-
構造体が戻り値の関数について...
-
WM_CHAR or WM_KEYDOWN の「wPa...
-
C言語のintとcharの違いってな...
-
C言語にて構造体のメンバがNULL...
-
new charとnew char[N]の違いは?
-
文字列str内の全ての数字を...
-
C言語において、以下の条件で...
-
strcat関数を自作したいです
-
ポインタを使用 [数字列を数値...
-
DWORDとcharの変換
-
文字列の途中から途中までを抽出
-
C言語で文字列をかえす正しい書...
-
文字の代入とコピーについて
-
小数点入りの文字列をfloat型に...
-
callocについて
-
'\\0'とはなんですか?
-
p = (char **)*p の意味
-
C言語を用いた環境変数の作成/...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
char*を初期化したいのですが
-
C言語のintとcharの違いってな...
-
CStringからchar*への型変換に...
-
C言語にて構造体のメンバがNULL...
-
小数点入りの文字列をfloat型に...
-
C言語のプログラムについてです
-
strcat関数を自作したいです
-
fstream型オブジェクトを関数の...
-
new charとnew char[N]の違いは?
-
DWORDとcharの変換
-
文字列の途中から途中までを抽出
-
char 文字列型 の表現範囲が-12...
-
const char* s1とただのchar s1...
-
wsprintf( ポインタ , "%d" , "...
-
c言語でポインタ変数を用いた配...
-
char型にint型の数値を代入する。
-
C言語で文字列をかえす正しい書...
-
C++17で、unsigned char * 配列...
-
共用体について
-
エクセルのMID関数は、C言語では?
おすすめ情報
const char *sでした。