Как вызвать функцию с аргументом int в C? - PullRequest
0 голосов
/ 21 апреля 2019

Я писал код на C, и мне нужно было определить функцию с аргументами типа int. По сути, я хочу проверить номер, однако это может быть 13, 15 или 16 цифр. Я разделил число на массив, чтобы у меня была каждая цифра, и я создал цикл for, чтобы выполнить некоторую обработку. Я просто хочу, чтобы максимальное число цикла for было переменной.

Я пытался написать цикл for, но с максимальным числом в качестве переменной R, а не числом. Проблема в том, что программа не компилируется, если я не инициализирую значение переменной R, которое должно быть взято при вызове функции в основной функции. Я приложил код к вам, и я буду рад, если кто-нибудь может мне помочь с этим. Спасибо.

int CHECK(int R);                        // Function Prototype
int main() {
    ...
    ...
    var = CHECK(15);               // Function called
    ...
    ...
int CHECK(int R);                 // Function definition
{
    int R;    
    for  (int z = 1; z <= R; z += 2) {
        if (array[z] <= 4)
        ...

Эта ошибка появляется при компиляции файла:

credit.c:56:9: note: initialize the variable 'R' to silence this warning
int R;    
    ^
     = 0
1 error generated.
<builtin>: recipe for target 'credit' failed
make: *** [credit] Error 1

Если мне нужно определить переменную R, его значение не будет изменено, и я не смогу R как результат операции. Что мне делать?

Ответы [ 2 ]

2 голосов
/ 21 апреля 2019

Я не совсем понимаю, чего вы пытаетесь достичь с помощью своего кода, но я думаю, что проблема в том, что вы объявили переменную R дважды.Один раз в качестве параметра для функции и один раз в теле функции.

int CHECK(int R);                 // this defines R
{
int R;                            // this also defines R
for  (int z = 1; z <= R; z += 2) {
if (array[z] <= 4)

Так что вам просто нужно попробовать удалить вторую строку:

int CHECK(int R);
{
for  (int z = 1; z <= R; z += 2) {
if (array[z] <= 4)
2 голосов
/ 21 апреля 2019

Ваша проблема называется «затенение переменной»:

Ваш параметр функции называется R, но в вашей функции также есть локальная переменная с тем же именем.

Локальнаяпеременная "затмевает" параметр, поэтому каждый раз, когда вы пишете R в коде после строки int R;, вы на самом деле ссылаетесь на переменную, а не на параметр!

Просто удалителокальная переменная, так как вы все равно ее не используете, и ваш код будет в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...