1

教授のコードの一部を理解しようとしています。彼はハードウェア割り当ての例を挙げましたが、コードのこの部分を理解する方法がわかりません..

コードは次のとおりです。

void addTask(TaskOrAssignment tasks[], int& taskCount, char *course, char *description, char *dueDate)
{
    tasks[taskCount].course = course;
    tasks[taskCount].description = description;
    tasks[taskCount].dueDate = dueDate;         
    taskCount++;
}

質問: " tasks[taskCount].course = course;" は char コースの場所にアクセスまたは宣言していますか?

私はこれに答えてくれることを願っています。私もこのサイトにはかなり慣れていません。

ありがとうございました。

4

3 に答える 3

0

course'\0'はcharポインタであり、終了した文字列を格納するスタックまたはヒープ内のメモリのブロックを指します。

tasks[taskCount].courseはcharポインタでもあり、割り当てtasks[taskCount].courseは同じメモリアドレスを指すようにcourseします。

于 2012-12-02T00:18:33.213 に答える
0
tasks[taskCount].course = course;

これを一度に1つずつ分解してみましょう。まず、代入演算子(=)を使用して、ある変数の値を別の変数に代入します。

右側は非常に単純で、。courseとして宣言されているという名前の変数だけchar*です。

変数に割り当てられますtasks[taskCount].course。メソッドのパラメーターを見ると、それがオブジェクトtasksの配列として宣言されていることがわかりTaskOrAssignmentます。したがってtasks[taskCount]、この配列の要素の1つを参照します。最後のは、そのオブジェクトで.course指定されたフィールドを指します。courseこのコードがコンパイルされると仮定すると、そのフィールドはクラスでとして宣言されchar*ますTaskOrAssignment

ほとんどの場合、両方のcourse変数が文字列を表します。(これはCに由来します。)すべてが言われ、行われるとき、両方coursetasks[taskCount].course同じ文字列バッファを指します。

于 2012-12-02T00:27:01.147 に答える
0

course(へのchar*ポインターchar) です。おそらく、 のcourseメンバーTaskOrAssignmentchar*です。その行が行うのは、配列のth 要素courseのメンバーに値を代入することだけです。coursetaskCount

おそらく、course引数は、ヌルで終わる C スタイル文字列の最初の文字へのポインターであることを意図しています。したがって、この割り当ての後course、配列要素のメンバーは同じ C スタイルの文字列を指します。ただし、もちろん、ポインターは実際にはどこを指している可能性もあります。

于 2012-12-02T00:29:36.800 に答える