printf% f ошибка адреса - PullRequest
       7

printf% f ошибка адреса

0 голосов
/ 28 июня 2018

У меня проблема с printf адресом указателя. Я был перепутан с printf. Вот код:

#include<stdio.h>
int main() {
  float aa[3] = {1.0, 2.0, 3.0};
  printf("%f, %f\n", aa, aa[1]);
  return 0;
}

Когда я скомпилировал его и получил такие результаты:

2.000000, 1.000000

Ответы [ 3 ]

0 голосов
/ 28 июня 2018

Вы можете использовать% p для печати адреса, Здесь aa и & aa [0] одинаковы, что содержит базовый адрес массива. попробуйте это:

printf("%p %p",&aa[0],aa); /*Which will give you the base address of array*/

Вы получите o / p в шестнадцатеричном формате.

0 голосов
/ 28 июня 2018

То, что вы делаете, в основном лжет (или, по крайней мере, изменяет) вашей библиотеке. Если это намеренно или случайно не имеет значения.

Вы говорите библиотеке, что хотите напечатать значение double. Не зная реального типа, printf извлекает содержимое для double из списка параметров переменной. Но затем вы помещаете адрес в список параметров, который имеет неправильный тип и неправильный размер.

Это означает не только то, что значение для этого параметра напечатано неправильно, но также и то, что неправильное количество байтов потребляется от входа.

Следовательно, второй параметр может быть напечатан неправильно, потому что printf читает с неправильного адреса.

0 голосов
/ 28 июня 2018

если вы хотите напечатать адрес, вы должны использовать тип аргумента% p, а не% f.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...