[英]Why am I getting “error: expected '}'” in C++ but not in C?
[英]Why am I getting error in initializing array using pointers in C++ (C++14)?
我在C ++ 14中初始化数组时遇到问题。
int *arr={1,2,3,4}; // Works in C but does not work in C++
我不明白它显示的错误消息
prog.cpp: In function 'int main()':
prog.cpp:6:26: error: scalar object 'arr' requires one element in initializer
int *arr = {1, 22, 5, 20}; //NOT WORKING IN C++
错误消息中初始化程序的确切含义是什么?
无法使用的C ++代码链接http://ideone.com/684V5t
使用C的相同代码的链接,该链接有效http://ideone.com/RAL3te
如果有人能解释为什么会这样,那就太好了。 谢谢。
这在C ++中不起作用,因为arr
不是类型类的变量,因此没有size
成员:
#include <iostream>
using namespace std;
int main() {
// your code goes here
int arr[] = {1, 22, 5, 20}; //NOT WORKING IN C++ < yes it does
cout << arr.size(); // << this does not "work" in C++
return 0;
}
顺便说一句错误消息:
prog.cpp:7:12: error: request for member 'size' in 'arr', which is
of non-class type 'int [4]' cout<<arr.size();
非常明确。
而且这不应该编译(或者至少应该得到警告),在C中也不在C ++中:
int *arr={1,2,3,4};
您需要这个(C和C ++):
int arr[] = {1, 22, 5, 20};
printf("%d", sizeof(arr)/sizeof(*arr));
输出将是4
。
在C语言中,这可能取决于编译器进行编译,但是您应该得到警告:
#include <stdio.h>
int main() {
// your code goes here
int *arr={1,2,3,4};
printf("%d\n", sizeof(arr));
printf("%d\n", sizeof(*arr));
printf("%p\n", arr);
return 0;
}
输出为:
4
4
0x1
因为sizeof(arr)
为4,而sizeof(*arr)
与sizeof(int)
相同,因为arr
是一个int
指针(假设是32位系统)。
由于初始化列表中的第n个第1
, arr
指针将包含1。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.