вопрос задан как минимум не корректно :-))
можно создать массив указателей на объекты определенного типа.
а числа могут быть, например, целыми или дробными и они должны храниться в каких то переменных, у которых есть адрес, который смогут хранить указатели.
Но приблизительно так:
int a,b,c;
int *ptr[ 3 ] = { &a, &b, &c } ;
Другие языки программирования и технологии
Как создать массив указателей на числа? (язык Си)
если на чистом С:
#include <stdio.h>
#include <stdlib.h>
/*считается, что тип числа произвольный: char, short, long, float, double, - для примера я выбрал int*/
#define NUMTYPE int*
#define DEF_LEN 4
int main( int argc, char **argv )
{
/*аргумент передается через argv, единственный аргумент, по умолчанию массив длинной 4*/
NUMTYPE *arr;
int len = DEF_LEN;
if ( argc >= 1 )
len = atoi(argv[ 1 ]);
arr = calloc(len, sizeof(NUMTYPE));
/*как то заполняете, помня о том, что всякий созданный объект должен быть уничтожен например
for ( int i = 0; i != len; i++ ) {
arr[ i ]=calloc(1, sizeof(NUMTYPE));
arr[ i ]=...
}
for ( int i = 0; i != len; i++ ) free(arr[ i ]);
*/
/*используете этот массив на свое усмотрение*/
/*освобождаете память из-под массива*/
free(arr);
}
Если вы имели в виду С++:
#include <vector>
#inculde <iostream>
int main()
{
/*опускаю как вы узнаете длину массива, предполагаю, что ввод массива происходит с клавиатуры*/
int num;
vector<int*> intpvec;
for(;;){
std::cin >> num;
if ( num != 0 ) {
int *tmp = new int;
*tmp = num;
intpvec.push_front(tmp);
}
}
/*используете*/
}
На самом деле необязательно чтобы элементы массива имели указателей являлись ссылками на статические элементы, строго говоря это нужно только при передаче данных по ссылке. Любые указатели, в частности возвращенные malloc() и calloc()(new, delete, если речь идет о С++) могут быть размещены в массиве и вполне достаточно для сохранения памяти иметь на них хотя бы одну ссылку (элемент означенного массива) .
Например
int *inparr[] = { NULL, NULL, NULL}
При этом не нужно указывать длину ибо и так ясно что это 3, нет нужды давать сразу ссылки, так как NULL - универсальный указатель, в дальнейшем вы можете сделать так
for ( int i = 0; i < 3; i++ ) inparr[ i ] = calloc( 1, sizeof(int) );
После этого еслы вы выведете значения указателей они будут указывать на некоторые адреса в памяти.
#include <stdio.h>
#include <stdlib.h>
/*считается, что тип числа произвольный: char, short, long, float, double, - для примера я выбрал int*/
#define NUMTYPE int*
#define DEF_LEN 4
int main( int argc, char **argv )
{
/*аргумент передается через argv, единственный аргумент, по умолчанию массив длинной 4*/
NUMTYPE *arr;
int len = DEF_LEN;
if ( argc >= 1 )
len = atoi(argv[ 1 ]);
arr = calloc(len, sizeof(NUMTYPE));
/*как то заполняете, помня о том, что всякий созданный объект должен быть уничтожен например
for ( int i = 0; i != len; i++ ) {
arr[ i ]=calloc(1, sizeof(NUMTYPE));
arr[ i ]=...
}
for ( int i = 0; i != len; i++ ) free(arr[ i ]);
*/
/*используете этот массив на свое усмотрение*/
/*освобождаете память из-под массива*/
free(arr);
}
Если вы имели в виду С++:
#include <vector>
#inculde <iostream>
int main()
{
/*опускаю как вы узнаете длину массива, предполагаю, что ввод массива происходит с клавиатуры*/
int num;
vector<int*> intpvec;
for(;;){
std::cin >> num;
if ( num != 0 ) {
int *tmp = new int;
*tmp = num;
intpvec.push_front(tmp);
}
}
/*используете*/
}
На самом деле необязательно чтобы элементы массива имели указателей являлись ссылками на статические элементы, строго говоря это нужно только при передаче данных по ссылке. Любые указатели, в частности возвращенные malloc() и calloc()(new, delete, если речь идет о С++) могут быть размещены в массиве и вполне достаточно для сохранения памяти иметь на них хотя бы одну ссылку (элемент означенного массива) .
Например
int *inparr[] = { NULL, NULL, NULL}
При этом не нужно указывать длину ибо и так ясно что это 3, нет нужды давать сразу ссылки, так как NULL - универсальный указатель, в дальнейшем вы можете сделать так
for ( int i = 0; i < 3; i++ ) inparr[ i ] = calloc( 1, sizeof(int) );
После этого еслы вы выведете значения указателей они будут указывать на некоторые адреса в памяти.
Похожие вопросы
- как ввести и вывести числа? Язык Си
- Указатели в языке Си
- Язык си, двухмерный массив и функция.
- Инициализация массива. Указатели.
- пожалуйста, напишите мне программу этого вопроса в C ++.пожалуйста помогите. Создать динамический массив из N чисел.
- Массив указателей в C++
- Язык Си: В одномерном массиве, состоящем из n вещественных элементов, вычислить: номер максимального по модулю элемента
- помогите написать программу на языке Си: В одномерном массиве целых чисел заменить максимальное значение минимальным.
- Язык СИ. Массивы Ребят, как на Си написать сортировку массива от меньшего к большему?
- КАК С ГЕНЕРИРОВАТЬ ДВА МАССИВА ИЗ СЛУЧАЙНЫХ ЧИСЕЛ С ПОМОЩЬЮ RANDOM НА ЯЗЫКЕ СИ? Я смог только заполнить от 0 до 255