230k views
2 votes
Which of the following function prototypes is illegal?

A. int getSum(int y, int z, int*);
B. int getSum(int[ ], int y, *k);
C. int getSum(int z, int k = 4);
D. int getSum(int[10]);

User Manjesh V
by
8.1k points

1 Answer

5 votes

Final answer:

The illegal function prototype is Option B which is int getSum(int[ ], int y, *k);. Option B, 'int getSum(int[ ], int y, *k);', is the illegal function prototype because the type for parameter 'k' is not specified, which violates C++ syntax rules. Therefore, option B is the correct answer.

Step-by-step explanation:

The illegal function prototype is Option B which is int getSum(int[ ], int y, *k);. In this option, the array parameter is not correctly defined as it is missing a dimension. The correct way to define an array parameter is to specify its size. For example, int getSum(int array[ ], int size, int* k);

Option B, 'int getSum(int[ ], int y, *k);', is the illegal function prototype because the type for parameter 'k' is not specified, which violates C++ syntax rules.

The student's question involves identifying an illegal function prototype among the given options. In C++, function prototypes must adhere to specific syntax rules to be considered valid. Here is a breakdown of each option:

A. int getSum(int y, int z, int*); is legal because it specifies a function that takes two integers and a pointer to an integer as arguments.

C. int getSum(int z, int k = 4); is legal and includes a default argument for the second parameter.

D. int getSum(int[10]); is legal and means that the function takes an array of 10 integers as an argument.

Therefore, option B is the illegal function prototype because it lacks the type specification for the parameter *k.

Among the provided function prototypes, option B. `int getSum(int[ ], int y, *k);` is illegal.

A. int getSum(int y, int z, int*);

This prototype is legal. It defines a function named `getSum` that takes two integer parameters (`y` and `z`) and a pointer to an integer (`int*`).

B. int getSum(int[ ], int y, *k);

This prototype is illegal. The parameter declaration for the array is incomplete. It should specify the type of the elements in the array. Also, the pointer declaration `*k` is missing the type of the pointed-to variable. The correct version would be something like `int getSum(int[], int y, int* k);`.

C. int getSum(int z, int k = 4);

This prototype is legal. It defines a function named `getSum` that takes two integer parameters (`z` and `k` with a default value of 4 for `k`).

D. int getSum(int[10]);

This prototype is legal. It defines a function named `getSum` that takes an array of 10 integers as a parameter.

In summary, option B is illegal due to incomplete and incorrect parameter declarations for the array and pointer.

User Ido Sela
by
8.6k points
Welcome to QAmmunity.org, where you can ask questions and receive answers from other members of our community.