実現したいこと
・配列のポインタを受け取り、その配列の要素数を返す関数が作りたい。
・配列やポインタの仕様に関して理解できていない部分を明確にしたい。
前提
c言語
発生している問題・エラーメッセージ
おそらく配列のポインタから配列全体のサイズを求められていない。 エラーメッセージ ```関節参照のレベルが異なっています。 ### 該当のソースコード ```c言語 ソースコード ```#include <stdio.h> size_t count(char *v) { size_t n; n = sizeof(v) / sizeof(&v[0]); return n; } int main(void) { char a[][5] = { "LISP","C","Ada","fin"}; char* p[] = { "PAUL","X","MAC","fin"}; printf("count(a)=%zu\n", count(a)); printf("count(v)=%zu\n", count(p)); for (int i = 0; i < count(a); i++) printf("a[%d]=%s\n", i, a[i]); for (int i = 0; i <count(p); i++) printf("p[%d]=%s\n", i, p[i]); return 0; } ### 試したこと sizeofを使わずにwhile(v[n++])などで要素数を求めようとした。 count内の式の分母をsizeof(v[n])にしたが、エラーが起こってしまった。 ### 補足情報(FW/ツールのバージョンなど)
回答4件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2023/03/09 06:16
2023/03/09 06:30