Программирование - это просто
Advertisement
Главная
25.04.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Microsoft visual c++ 2008. Урок 20. Двумерные массивы. Указатели на функцию. Печать E-mail
Автор megabax   
29.10.2012 г.
New Page 1

Microsoft visual c++ 2008. Урок 20. Двумерные массивы. Указатели на функцию.

В C++ можно использовать так же и двумерные массивы. Их можно объявить, например, вот так:

int m[10][23];

Тип двумерного массива может быть и char:

char m[10][23];

Тогда в нем можно задать ряд строк одинаковой длины. Но как быть, если нам нужен массив строк разной длины? В этом случае можно использовать массив указателей:

char *s[23];

К нулевому элементу n-ой строки можно обратится как *s[n], для перехода к следующему элементу сделать так *s[n]++. Инициализация такого массива выглядит примерно так:

char *a[3]={"First string","Second string","Third string"};

В c++ есть еще такая фишка, как указатель на функцию. По сути, функция - это кусок программного кода, расположенный по определенному адресу в памяти. Логично что и на него можно получить указатель. Соответственно, применяя операцию разыменовывания к такому указателю мы можем выполнить эту функцию.

Давай рассмотрим это на примере:

// les20.cpp: определяет точку входа для консольного приложения.

//

 

#include "stdafx.h"

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#define eof -1

#define maxline 1000

 

//Функция подсчета количества битов в целом числе

int bitcount(unsigned int n)

{

       int b;

       for (b=0; n!=0; n>>=1) if(n & 01) //восмиричная единица

       b++;

       return(b);

}

 

//ввод строки с клавиатуры

int getline(char s[], int lim)

{

       int c,i;

       for (i=0; i<lim-1 && (c=getchar()) != eof && c != '\n'; i++) s[i]=c;

       s[i]='\0';

       i++;

       return (i);

}

 

//функция вводит число n с клавиатуры и подсчитывает количество единиц в нем

int gener(int (*getline)(char s[], int lim), int (*bitcount) (unsigned int n))

{

       char s[maxline];

       int lim=100;

       printf("Enter any number >\n");

       (*getline) (s,lim);

       unsigned int n=atoi(s);

       n=(*bitcount) (n);

       return (n);

}

 

 

 

int _tmain(int argc, _TCHAR* argv[])

{

       int n=gener(getline, bitcount);

       printf("The amount of ones in the input n=%o\n",n);

       _getch();

       return 0;

}

В этом примере В этом примере мы объявляем три функции, при чем в третьей в качестве аргументов передаем указатели на первые две функции. Путь этот пример будет для вас типа справочника по синтаксису, запомните его, что бы вернутся, когда вам понадобиться работать с указателями на функции.

Набрав пример, проверим, что он работает:

Microsoft visual c++ 2008. Урок 20. Двумерные массивы. Указатели на функцию.

 


Скриншоты, помеченные знаком *, являются цитатами и иллюстрациями   программного продукта "Microsoft Visual C++ Express Edition", авторское право на который принадлежит корпорации Microsoft.. 


 

Последнее обновление ( 29.10.2012 г. )
 
« След.   Пред. »
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги