Это объявление:
char s[] = "hello";
Создает объект one - массив char
размером 6, называемый s
, инициализированный значениями 'h', 'e', 'l', 'l', 'o', '\0'
. Если этот массив выделен в памяти и как долго он живет, зависит от того, где появляется объявление. Если декларация находится в пределах функции, она будет жить до конца блока, в котором она объявлена, и почти наверняка будет выделена в стеке; если он находится вне функции, то вероятно будет храниться в «инициализированном сегменте данных», который загружается из исполняемого файла в записываемую память при запуске программы.
На с другой стороны, это объявление:
char *s ="hello";
Создает два объекта :
char
s, содержащий значения 'h', 'e', 'l', 'l', 'o', '\0'
, который не имеет имени и имеет продолжительность статического хранения (что означает, что он живет на весь срок службы программы); и s
, которая инициализируется с расположением первого символа в этом неназванном, доступном только для чтения массиве. Неименованный доступный только для чтения массив обычно находится в сегменте «текст» программы, что означает, что он загружается с диска в постоянное запоминающее устройство вместе с самим кодом. Расположение переменной указателя s
в памяти зависит от того, где появляется объявление (как в первом примере).
Если у вас нет $routeProvider
, не будет маршрутизации и, следовательно, нет хеша в вашем URL-адресе.