передача параметров по ссылке в функцию на C (не С++)
int k;float X=10; k=&X; - можно!!!
во вложении файл swap.c простейшей функции перестановки - она под C++ идет, под C - нет.
Файл тестировался в среде C++Builder консольные приложения под С
Так ли это!!!
#include
void swap_values(float *a, float *b)
{
float temp;
temp = *a; *a = *b;
*b = temp;
}
void main(void)
{
float big = 10000.0; float small = 0.00001;
swap_values(&big, &small);
cout << "Big содержит " << big << endl;
cout << "Small содержит " << small << endl;
}
int k;float X=10; k=&X; - можно!!!
во вложении файл swap.c простейшей функции перестановки - она под C++ идет, под C - нет.
Как вы определили что под C++ идет а под C - нет? Программа не компилится, или работает неправильно? Как я сам думаю, должно быть первое - программа не должна закомпилиться, но не потому что передача параметров по адресам в C не работает (она там работает на самом деле), а потому что у вас в программе используется поток вывода cout, который из библиотеки iostream, которая для C++ вообще-то. Если вам нужен вывод на экран, то нужно вместо cout printf из stdio.h использовать.
Переделал ваш пример под C:
void swap_values(float *a, float *b)
{
float temp;
temp = *a; *a = *b;
*b = temp;
}
void main()
{
float big = 10000.0;
float small = 0.00001;
swap_values(&big, &small);
printf("Big contains %f\n", big);
printf("Small contains %f\n", small);
}
У меня всё прекрасно работает (правда, я не в Builder, а в Visual Studio пробовал).
P.S. Да, если мой пример поможет, то можете в качестве благодарности стишок подкинуть :) (лучше в личку, а то модераторы суровые).
Я путем тестирования (ни в каких руководствах не нашел), что передаче параметров по адресам в функцию в языке C типа some_function(&some_variable); не проходит!!!,
Для начала, читайте литературу! С определениями полная каша!
"по адресам" - это "указатель" имеется в виду?
И что, ты хочешь сказать, что в C функция не может принимать указатель?
НУ ЧТО ЗА БРЕД!!!
Читай книги, а не учись вслепую "путем тестирования".
хотя работать с адресами в операторах типа
В C нет операторов.
во вложении файл swap.c простейшей функции перестановки - она под C++ идет, под C - нет.
Куда идет? Куда ты её послал, а она не пошла?
Формулируй мысли правлильно, а для этого (ещё раз повторяю) прочти любую книгу по C/C++.
P.S. Тема закрыта как идиотская. Все возражения принимаются в личку.
Нет в C передачи параметров по ссылке, если говорить в терминологии C++. Только по значению или с помощью указателя. Об этом в нормальных учебниках пишут.