|
|
Другие темы раздела | |
C (СИ) Функция обращения массива Составьте функцию revarray, переставляющую элементы любого массива в обратном порядке. Функция должна быть объявлена как void revarray(void *base, unsigned long nel, unsigned long width) { ... } Здесь параметр base означает указатель на начало массива, nel – количество элементов в массиве, а width – размер каждого элемента массива в байтах. Проверка работоспособности функции... https://www.cyberforum.ru/ c-beginners/ thread1831158.html |
Умножение матриц: найти ошибку в вычислениях C (СИ) Не понимаю в чем ошибка. учусь на указателях,поэтому обязательное выполнение задачи на них. #include<stdio.h> main() {int a,b,c,f,d,*i1,*j1,vn,nomer1,nomer2,buf1,buf2,*u,*i,*j,n,m,s,*k; printf("Vvedite razmern. massiva A \n"); scanf("%d%d",&n,&m); for(i=*a;i<*(a+n);i+=20) for(j=i;j<i+m;j++) scanf("%d",j); |
C (СИ) Сформировать однонаправленный список со звеном-заголовком, удалить две следующие буквы после буквы "Т" Сформировать однонаправленный список из звеном-заголовком и вы- далиты две следующие буквы после буквы "Т". Вывести на печать оба списки. #include <stdio.h> #include <stdlib.h> #include <string.h> #define MES_LEN 200 //using namespace std; typedef struct inform https://www.cyberforum.ru/ c-beginners/ thread1830988.html | C (СИ) Программа для удаления лишних пробелов, табуляций, строк в файле Здравствуйте. Помогите дополнить или изменить программу (на Си), которая удаляла бы лишние пробелы, табуляции и пустые строки в файле. Благодарю. #include <stdio.h> #include <stdlib.h> #include <ctype.h> int test_str(const char * s) { https://www.cyberforum.ru/ c-beginners/ thread1830962.html |
Седловая точка в матрице C (СИ) Элемент двумерного массива называется седловым, если он одновременно наибольший в своей строке и наименьший в своём столбце. Дан целочисленный двумерный массив, размер которого не превышает 10 × 10. Известно, что все элементы массива различны. Составьте программу saddlepoint.c, определяющую седловую точку в этом массиве. Программа должна считывать из стандартного потока ввода количество строк и... |
C (СИ) Умножение матрицы на матрицу
https://www.cyberforum.ru/ c-beginners/ thread1830935.html Не понимаю в чем ошибка. учусь на указателях,поэтому обязательное выполнение задачи на них. |
C (СИ) Определить наличие заданных символов в строке
https://www.cyberforum.ru/ c-beginners/ thread1830851.html Помогите составить программу, где нужно ввести строку. Если в этой строке есть символы "q'',''w'',''e'', то вывести на экран,что в строке есть символы "q'',''w'',''e'', а если нет то выввести, что нет этих символов. |
C (СИ) Найти произведение нечетных цифр двух чисел m и n (Pascal -> C) Перевести код с Pascal в C. Нужно найти произведение нечетных цифр двух чисел m и n.var n, s, t, m, v, c :integer; begin readln(n); readln(m); s := 1; v :=1; while n > 0 do begin t := n mod 10; |
C (СИ) Вычислить значение выражения
https://www.cyberforum.ru/ c-beginners/ thread1830831.html Задача: Дано натуральное n и действительное a. Вычислить: 1/a + 1/a(a+1) + .... + 1/a(a+1)....(a+n) ; В общем учусь на первом курсе, знаний мало, написал что смог (все работает, считает правильно) Но преподша не приняла, говорит типо деление на 0 не учтено, хотя консоль выдает "inf", если в знаменателе 0 Сам код: |
C (СИ) Создать игру "Русское Лото" Привет дорогие форумчане, прошу помочь с написанием программы на Си. Идея программы заключается в создание игры "Лото" . Есть код программы на С++. Не могли бы вы мне помочь его исправить на Си https://www.cyberforum.ru/ c-beginners/ thread1830810.html |
Рекурсивное возведение в целую степень C (СИ) Только начал разбираться с рекурсией, идет туго. Возведение в степень получилось примерно таким : #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <math.h> long double pow(long double denominator, int power); int main(void) { |
C (СИ) Переставляя строки матрицы, расположить их по возрастанию сумм их положительных четных элементов Характеристикой строки целочисленной матрицы назовем сумму ее положительных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с ростом характеристик. При поиске суммы выводит просто 1. #include "stdafx.h" #include <stdio.h> #include <conio.h> int _tmain() { int a, m,n, sum, mem,i,j; https://www.cyberforum.ru/ c-beginners/ thread1830752.html |
875 / 461 / 91
Регистрация: 10.06.2014
Сообщений: 2,669
|
|
0 | |
Выравнивание адреса памяти - C (СИ) - Ответ 967149321.10.2016, 14:48. Показов 20839. Ответов 47
Метки (Все метки)
Прочитал на разных ресурсах про выравнивание адреса данных, но многое ещё не понятно.
Чего я понял: Выравнивание адреса нужно для того что бы снизить количество обращений процессором к памяти для считывания хранимых данных Чем больше объем данных адрес которых нуждается в выравнивании, тем больше усилий процессор прилагает что бы получить данные по невыровненному адресу Не все процессоры умеют выравнивать адрес памяти самостоятельно Чего я не понял: Увидел следующее утчерждение: Адрес данных должен быть кратен размеру считываемых данных. Как программист может повлиять на кратность адреса, если выделением адреса данных занимается компилятор и этот процесс насколько понимаю выходит за пределы программного кода? Некоторые компиляторы сами занимаются выравниванием адресов(дополняя данные адреса нулями) что бы можно было считать блок данных за минимальное количество обращений процессором к памяти. Именно не понятно, зачем забивать данные нулями Прошу помочь разобраться Добавлено через 17 минут И ещё не ясно что приводит к "кривости" памяти которую потом приходится выравнивать Добавлено через 52 минуты Пока бродил по инету, нашел пример где структура с одинаковыми полями занимает разный объем в памяти в зависимости от последовательности типов в структуре. Это тоже как то связано с выравниванием данных? http://rextester.com/WLM62012 24 байта http://rextester.com/UKWSN11327 16 байта Добавлено через 11 минут Кажется начал понимать почему заполняются нулями данные. Похоже дело в том, что каждый процессор может прочитать только определенное количество данных за одно обращение к памяти. Допустим, это число равно 4. Когда процессор читает char, нельзя позволить что бы он прочитал 1 байт который относится к char и 3 байта от других данных. Поэтому к char будут добавлены нули, что бы свести общий размер данных к 4. Если это так, то почему char a = 'b'; printf("%zu", sizeof(a)); равно 1, а не 4? В то время как внутри структуры из примера выше заполнение нулями есть(это определил потому что размер структуры превышает тот размер которого достаточно для хранения его данных) Добавлено через 13 минут Выходит о выравнивании данных нужно заботиться только в том случае, когда в непрерывной области памяти находятся данные разных типов? Как например структуры, или массив функций которые возвращают значения разного типа? (Массив функций возвращаемое значение которых есть указатель на void*) Вернуться к обсуждению: Выравнивание адреса памяти C (СИ)
0
|
21.10.2016, 14:48 | |
Готовые ответы и решения:
47
Выделить в памяти 1024 ячейки по 8 байт и вывести их адреса(МИНИ менеджер памяти)) Записать дополнительный код содержимого 16 ячеек памяти, начиная с адреса 910. Результаты занести в ячейки памяти, н Выравнивание памяти под 16 Выравнивание памяти в stm32 |
21.10.2016, 14:48 | |
21.10.2016, 14:48 | |
Помогаю со студенческими работами здесь
0
Выравнивание сегмента памяти Выравнивание памяти и скорость работы. Адреса памяти Узнать адреса памяти |