$name) { echo $no." ) ".$name; } /* Output : 0) Laguna 1) Megane 2) Clio */ どのように私はCでそれを行うことができますか? "> $name) { echo $no." ) ".$name; } /* Output : 0) Laguna 1) Megane 2) Clio */ どのように私はCでそれを行うことができますか? "> $name) { echo $no." ) ".$name; } /* Output : 0) Laguna 1) Megane 2) Clio */ どのように私はCでそれを行うことができますか? " />

Cでの配列のリスト

私はCを学んでいます。私は配列の値をリストしたいと思います。

PHPの場合:

$arr = array("laguna", "megane", "clio");
foreach($arr as $no => $name)
{
     echo $no." ) ".$name;
}
/*
Output :
0) Laguna
1) Megane
2) Clio
*/

どのように私はCでそれを行うことができますか?

4
CまたはC ++?あなたは選択する必要があります
追加された 著者 Armen Tsirunyan,
OK私はCを選んでいます:)
追加された 著者 Eray,

6 答え

Cで

char* arr[] = {"laguna","megane","clio",NULL};

for( int i = 0; arr[i]; i++)
{
   printf("%d) %s\n",i,arr[i]);
}
5
追加された
私は i <3 を使用できません。配列の要素数は分かりません。どうすればそれらを数えることができますか?
追加された 著者 Eray,
@Erayあなたはどういう意味ですか? PHPコードには3つの要素があります。それらを数える。動的なサイズの配列を行う方法を知りたければ、そう言います。あなたの質問はこれについて言及していません。私たちはあなたの心を読むことができません。
追加された 著者 David Heffernan,
あなたは行く、ちょうど0の後に要素を追加しないでください。
追加された 著者 Nico,
@AusCBlokeポインタの配列はまだ配列です。他の読者のために言い換えてください。
追加された 著者 Nico,
@Eray: sizeof(array)/ sizeof(* array)は、配列内の要素の数を示します(上の例のように、動的に割り当てられない自分で数える必要はありません。 Nicoのようにシーケンスの終わりを表す NULL を持つことは、実際の配列ではなくポインタしか持たないときのサイズを把握しなければならない場合のまともな代替手段です。
追加された 著者 AusCBloke,
@Nico:ポインタの配列については言及していませんでしたが、配列とは対照的に、 malloc によって返されるポインタなど、 sizeof を使用してサイズを取得することはできません。
追加された 著者 AusCBloke,

NOTE: The OP's question was originally tagged as C++, so I'll leave this answer as-is for those who might be curious about a C++ specific method

アルゴリズムのアルゴリズムの中で for_each アルゴリズムを使うことができます...逆参照でき、段階的に介入できる(つまり operator ++ )。

for_each アルゴリズムへの入力引数は、 std :: vector のようなSTLコンテナを使用している場合は、配列またはコンテナオブジェクトの先頭を指すポインタ(またはイテレータ) >など、オブジェクトの終わりを1つ指すポインタまたはイテレータ、次に配列またはコンテナの各メンバに適用される関数。

例えば:

#include 
#include 

using namespace std;

int array[] = { 1, 2, 3, 4, 5 };

//pointer to the start of the array
int* start = array;

//pointer to one position past the end of the array
int* end = array + sizeof(array)/sizeof(int);

//function applied to each member of the array
void function(int a)
{
    static int count = 0;
    cout << "Value[" << count++ << "]: " << a << endl;
}

//call the for_each algorithm
for_each(start, end, function);
3
追加された
私は、int * end = array + sizeof(array)/ sizeof(int)
追加された 著者 Ulterior,
もっと簡単な例が必要です。
追加された 著者 Eray,
#include 

int main(){
    char *arr[] = {"laguna", "megane", "clio", NULL};
    char **name = arr;
    while(*name){
        int no = name - arr;
        printf("%d ) %s\n", no, *name++);
    }

    return 0;
}
1
追加された

CとC ++は同じ言語ではありません。最近のC ++の方言でC ++の std :: vector を使ってみると、(テストされていないコード):

std::vector vecstr;
vecstr.push_back("laguna");
vecstr.push_back("megane");
for (std::vector::iterator it= vecstr.begin(); 
     it != vecstr.end(); it++)
   std::out << *it << std::endl;
0
追加された

これにより、C ++で配列を使用することができます。

//arrays example
#include 
using namespace std;

int billy [] = {16, 2, 77, 40, 12071};
int n, result=0;

int main ()
{
  for ( n=0 ; n<5 ; n++ )
  {
    result += billy[n];
  }
  cout << result;
  return 0;
}

You can go one step ahead and use STL containers like set and map. http://ideone.com/U62Q8

0
追加された
ああ。今質問は編集されました!
追加された 著者 King,

C:

#include 
int array[6]= { 1, 2, 3, 4, 5, 6 };
void main() {
  int len=sizeof(array)/sizeof(int);
  int i;
  for(i=0;i
0
追加された