Они оба означают одно и то же? Различается ли их значение между C и C++?C++: В чем разница между int * x [5] и int (* x) [5]?
ответ
Вы можете ответить на этот вопрос самостоятельно, используя http://cdecl.org/ (вставьте его в тип и сообщите, что это означает на английском языке).
Они оба означают одно и то же?
No.
ли смысл их отличаются между C и C++?
No.
int* a[5]
представляет собой массив из пяти указателей на INT.
int (*a)[5]
- указатель на массив из пяти целых чисел.
Я вечно благодарен за сайт треков. Теперь я понимаю разницу. – quantum231
Однако все еще можно использовать int * a для указания массива точно так же, как int * a [5], и оба являются взаимозаменяемыми. Является ли арифметическая проверка указателя на int * a [5], если указатель перемещен в несуществующий 6-й элемент? – quantum231
@ quant231, C и C++ не требуют никакой арифметической проверки указателя. И они не взаимозаменяемы. 'int * a1 [5]; int (* a2) [5]; * a1 = * a2; 'компилирует ok, но' * a2 = * a1; 'нет. Выяснить, почему в качестве упражнения для читателя. –
Они не одинаковы:
int * a[5]
представляет собой массив из пяти элементов, каждый элемент представляет собой указатель внутр.
int (*a)[5]
- указатель на массив, этот массив содержит пять элементов int.
Это значение одинаково для c и C++.
Для быстрой, используя http://cdecl.org/ (не рекомендуется)
Для понимания, чтения How to interpret complex C/C++ declarations (рекомендуется)
В C и C++, в 2 декларации смысл не меняется. В объявлениях C и C++ '[]' имеет более высокий приоритет, чем '*' при объединении с переменными. Таким образом, в объявлении int * x [5] x объединяется с [5], поэтому это 5-элементный массив из int *. Однако в заявлении int (* x) [5] x принудительно объединяется с '*' с помощью '()', поэтому теперь x является указателем на int [5].
Используйте правое правое правило.
Начать с объявления переменной - x
.
Теперь читайте до тех пор, пока вы не нанесете верхний уровень ,
, ;
или неуравновешенное закрытие )
или конец декларации.
Прочтите влево, пока не найдете подходящее (
. Повторяйте с самого начала.
x) // x
(*x) // is a pointer to
(*x)[5]; // an array of 5 elements
int (*x)[5]; // of integers
x[5]; // x is an array of 5 elements
*x[5]; // of pointers to
int *x[5]; // integers
Простой!
- 1. В чем разница между int [] x; и int x [] ;?
- 2. C: разница между (int) x и floor (x)?
- 3. Разница между передачей (int x) и (const int & x)
- 4. В чем разница между int x = 1 и int x (1) в C++?
- 5. В чем разница между `extern int (x) []` и `extern int x []` в C?
- 6. Есть ли разница между int x {}; и int x = 0 ;?
- 7. В чем разница между «Int * а [5]» и Int (* а) [5] "?
- 8. В чем разница между «int * a = new int» и «int * a = new int [5]»?
- 9. В чем разница между «int a [5]» и int (* a) [5], int a [5] [4] и int (* a) [5]? (Только C)
- 10. В чем разница между 'int [] arr1 = null;' и 'int [] arr1 = int [5];' относительно выделения памяти
- 11. В чем разница между [] int и int []
- 12. Есть ли разница между int * x и int * x в C++?
- 13. В чем разница между .NET 4.5.x и .NET 5?
- 14. В чем разница между int ++ и ++ int?
- 15. В чем разница между int [] [] и int [,]?
- 16. Разница между func (int & x) и func (int & x) в C++
- 17. В чем разница между int -> int -> int и (int * int) -> int в SML?
- 18. В чем разница между if (x^1! = 1) и if (int (x^1)! = 1) в C++?
- 19. В чем разница между int и extern int в C?
- 20. В чем разница между int и (int) в C?
- 21. В чем разница между 'int?' и 'int' в C#?
- 22. Почему int x = int (5) является законным, если int не является классом?
- 23. В чем разница между crontab между */5 и 0/5?
- 24. «x» и «x», x <- 5 и x = 5 одинаковы в R?
- 25. Типы и дженерики: разница между `[X <: Int]` и `{тип X <: Int}`
- 26. Разница между деловыми работами Tibco 5.x и 6.x
- 27. Разница API iOS между 4.x и 5.x
- 28. Почему Java допускает как int x [], так и int [] x?
- 29. Разница между Int() и Int: в Swift
- 30. Какова линия int * (* (x [3])()) [5]; делать в C?
http://cdecl.org/ –