Что вам нужно, чтобы идентифицировать ваш домашний компьютер со всего Интернета, чтобы получить доступ извне.
Этот учебник поможет вам http://kyokasuigetsu25.wordpress.com/2011/ 01/21 / how-to-access-localhost-of-computers-outside-the-network /
Но если у вас есть только простые html-файлы (css, js too), вы можете использовать Dropbox и обмениваться папками ваших сайтов. Таким образом, вы можете работать локально, и файлы будут синхронизироваться с вашей общей папкой
Надеюсь, что это поможет
Какова его цель, почему она была добавлена?
blockquote>Назначение видно, когда в качестве параметра функции используется двоичный размер переменной длины. Функция
int foo(int n, int m, int a[n][m]) {...}
может быть прототипирована как любая из следующих
int foo(int , int, int [][*]); int foo(int , int, int a[*][*]); int foo(int , int, int (*a)[*]); int foo(int n, int, int a[n][*]); int foo(int , int m, int a[*][m]); int foo(int , int m, int (*a)[m]); int foo(int n, int m, int a[n][m]);
. В случае двумерного массива, когда он используется как параметр функции, размер второго измерения может " t опустить. Если имя первых переменных в прототипе функции опущено, тогда было бы невозможно указать длину (второе измерение) массива.
*
дает понять, что длина массива будет определяться вторым параметром.В чем разница с
blockquote>int[]
? В чем разница сint *
?В случае 1D-массива для определения функции
int bar(int n, int a[n]} {...}
допустим любой из следующих прототипов
int bar (int , int *); int bar (int , int [*]); Int bar (int , int []); int bar (int n, int a[]); int bar (int n, int a[n]); int bar (int n, int [n]);
В этом case
*
иn
не требуется, поскольку компилятор будет рассматривать какint [*]
, так иint [n]
какint *
. Итак, с одномерным массивом вы не видите большой разницы.
ПРИМЕЧАНИЕ. При использовании массива переменной длины в качестве параметра функции важно указать параметр. Порядок параметров для первых четырех прототипов
bar
можно переключить, но в последних двух первых параметрах не должно быть самого массива.int bar (int a[n], int n); //Wrong. Compiler has not yet seen 'n'.
В документе обоснования C для C99 указано
Прототип функции может иметь параметры, которые имеют типы массивов переменной длины (§6.7.5.2), используя специальный синтаксис, как в
int minimum(int, int [*][*]);
Это согласуется с другими прототипами C, где имя параметра не требуется указывать.
blockquote>
В чем разница с int []
В чем разница с int *.
blockquote>I что эти типы в прототипе функции означают «указатель», а
[*]
в непервой позиции (int[*]
по-прежнему равенint[]
, я думаю, что в прототипе функции) действительно и означает array// not recommended though: it is now unclear what the parameters // mean to human callers! void f(int, int [][*]); void f(int n, int x[][n]) { x[1][0] = 1; } int main() { int a[2][1]; f(1, a); printf("%d\n", a[1][0]); }
Что касается этой цели, то при индексировании массива в определении функции компилятор должен знать, сколько целых чисел следующего индекса пропустит при выдаче первого индекса (
x[i]
пропускаетi * n
целые числа вf
выше). Но эта информация не нужна в объявлении прототипа без определения, поэтому его можно оставить и заменить на*
.
void f(int, int x[][*])
. Когда вы даете первому параметру имя, тогда нет необходимости в *
. Весь смысл этой функции заключается в том, что вы можете использовать старомодные прототипы функций, которые не называют параметры.
– user3386109
4 August 2016 в 19:33
int bar (int [*], int);
верен. – M.M 5 August 2016 в 04:30