Я только недавно начал изучать C. Я изучал концепцию массивов и указателей, когда наткнулся на камень преткновения в своем понимании этого.
Рассмотрим этот код -
#include<stdio.h>
int main()
{
char string[]="Hello";
char *ptr;
ptr=string;
puts(*ptr);
return(0);
}
Он компилируется, но при выполнении возникает ошибка сегментации.
Предупреждение, которое я получаю:
введите ошибку в аргументе 1 для `puts'; найден 'char' ожидаемый 'указатель на char'
Теперь *ptr действительно возвращает символ «H», и мое первоначальное впечатление было, что он просто примет символ в качестве ввода.
Позже я понял, что puts() ожидает указатель на массив символов в качестве входных данных, но мой вопрос заключается в том, что когда я передаю что-то вроде этого - puts("H"), разве это не то же самое, что и puts(* ptr), учитывая, что *ptr содержит символ "H".