C Массив адреса путаницы - PullRequest
       2

C Массив адреса путаницы

0 голосов
/ 28 сентября 2010

Предположим, у меня есть следующий код:

main ()
{
  char string[20];

  printf(" The String is %s \n " , &str);
}

Что даст printf(" The String is %s \n " ,&str);?

Предположим, что str указывает на местоположение 200, что даст &str ??

Ответы [ 3 ]

1 голос
/ 28 сентября 2010

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

main ()
{
  char string[20];
  char *str = &string;

  printf("The String addr is %p \n" , &string);
  printf("The String addr is %p \n" , &string[0]);
  printf("The String addr is %p \n" , str);
  printf("The String addr is %p \n" , &str[0]);
}

все это эквивалентные способы получения адреса «массива». Адрес массива - это адрес первого элемента массива.

0 голосов
/ 28 сентября 2010

Предполагая, что вы фактически инициализировали массив строкой (что вы не сделали, но давайте предположим, что вы сделали), тогда:

Он имеет тип char (*)[20].Он выдаст тот же вывод, что и

printf("The String is %s\n", str)

&str, указывает на ту же область памяти, что и str, но другого типа;а именно указатель на массив.Тип str имеет тип указатель на символ.

0 голосов
/ 28 сентября 2010

Вы должны получить предупреждение о том, что

%s expects char* but argument 2 has char (*)[20] type.

Адрес не печатается, фактически ничего не печатается.

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