C# для начинающих Пахомов Б. И



Download 8,15 Mb.
Pdf ko'rish
bet61/266
Sana20.04.2022
Hajmi8,15 Mb.
#567200
1   ...   57   58   59   60   61   62   63   64   ...   266
Bog'liq
C# for beginners


Часть I. Базовые сведения о программировании на языке C# 
в разных классах памяти: статические — в стековой памяти программы
а нестатические — в так называемой управляемой куче, где за такими 
объектами следит специальный механизм очистки памяти). 
Создание некоторых функций 
Пример функции, которая обеспечивает ввод строки ограниченного 
числа символов с выдачей длины введенной строки, приведен в лис- 
тинге 4.1. 
Листинг 4.1 
/* Created by SharpDevelop. 
* User: user 
* Date: 15.11.2012 
* Time: 11:15 

* To change this template use Tools | Options | Coding | 
* Edit Standard Headers. */ 
using System; 
namespace app9_func 

class Program 

static string str; 
// Вводит строку длиной не более lim символов 
// и выдает фактическую длину строки 
// или 0, если лимит превзойден 
static int getline(ref string s,int lim) 

int i; // для учета количества символов 
s=Console.ReadLine(); 
i=s.Length; 
if(i > lim) 
i=0; 
return(i); 



Глава 4. Функции 
91 
public static void Main(string[] args) 

Console.WriteLine("Ввод строки с ограничением " + 
"по ее длине\n"); 
int lim=10; 
Console.WriteLine("Вводите строку >\n"); 
int i = getline(ref str,lim); 
Console.WriteLine("Результат ввода: строка {0}, длина строки 
{1}", str, i); 
Console.WriteLine("Для продолжения нажмите " + 
"любую клавишу > "); 
Console.Read(); // Задержка экрана 



Функция 
getline()
имеет два параметра: один ссылочного типа 
string
s
, а другой — не ссылочного 
int
lim
. Говорят, что данные в первый па-
раметр передаются по ссылке, а во второй — по значению. Мы об этом 
уже говорили ранее: данные для второго параметра при обращении к 
getline()
кладутся на полочку в стековой памяти 
getline()
, потому что 
так работает функция. Когда она вызывается на выполнение из 
Main()
,
в ее стеке запоминается адрес 
Main()
, на который она должна возвра-
титься после своего завершения, а с полочек, которые ей создал компи-
лятор для помещения параметров-значений, она должна забрать эти 
значения. Но нашей задачей было ввести строку символов в какую-то 
переменную и так, чтобы эта строка не локализовалась в самой функции 
(т. е. была бы неизвестной для других программ), а чтобы функция, как 
говорят, выдала наверх, вне себя, результат ввода. То есть ее первый 
параметр должен быть выходным, а не входным, как второй параметр 
lim
. А как сделать так, чтобы содержимое переменной-параметра могло 
бы изменяться внутри тела функции? Надо, чтобы в качестве параметра 
передавался не адрес полочки стека, на которой лежит некоторое значе-
ние и которая принадлежит самой функции, а адрес переменной, объяв-
ленной вне функции без предварительной пересылки ее содержимого на 
полочку в стек программы, как это делается с параметрами-значениями. 
Когда мы ставим квалификатор 
ref
при описании параметра функции, 
компилятор не станет связывать параметр с полочкой в стеке, а сделает 
так, что когда вы вместо такого параметра поставите имя фактической 
переменной с квалификатором 
ref
, то вместо имени подставится адрес 


92 
Download 8,15 Mb.

Do'stlaringiz bilan baham:
1   ...   57   58   59   60   61   62   63   64   ...   266




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish