Tag: 初始化

为什么我不能直接将int赋给int指针,如下所示:int * p = 6;?

错误:从“int”到“int *”的无效转换 int *q = 8; 工作良好。 *q = 6; 为什么我不能直接将int赋给int指针,如下所示: int *q = 6 ; 我可以在下一行安全地分配它吗?

C – 检查是否分配了整数

如何确定是否取消分配整数? int i; /* no assignment */ if (/* conditional statement here to check if int i is unassigned or not */) { printf(“Integer is unassigned!\n”); } else { printf(“Integer is assigned!\n”); }

将动态大小的可变长度数组(VLA)初始化为0

以下代码行,在堆栈上创建一个可变长度数组: char name[length] = {‘\0’}; 生成以下编译器诊断: error: variable-sized object may not be initialized warning: excess elements in array initializer warning: (near initialization for ‘name’) 有哪些选项可用于初始化VLA? 我被迫使用如下行: memset(name, 0, sizeof(name)); 代替?

在没有赋值的情况下初始化struct?

我无法在互联网上找到答案,所以这是我的问题:我可以定义一个结构实例而不将其分配给C中的本地或全局变量吗? 例如: struct A { int b; } struct A foo() { return struct A { .b = 42 }; } 如果这不可能:为什么?

初始化大型双数组的问题

来自新C程序员的愚蠢问题……我在以下代码中遇到了分段错误: #include int main(void) { double YRaw[4000000]={0}; return 0; } 使用GDB,我收到以下评论: Program received signal EXC_BAD_ACCESS, Could not access memory. Reason: KERN_PROTECTION_FAILURE at address: 0x00007fff5dd7b148 0x0000000100000f24 in main () at talk2me.c:18 18 double YRaw[4000000]={0}; // set YRaw[memdepth] so index is 0 to memdepth-1 如果我将YRawarrays的大小减少10倍,那么一切都有效。我在系统中有6GB的RAM,那么为什么我会收到错误? 谢谢,Gkk

gcc不再允许空数组吗?

我有gcc 4.7.2-3,我得到以下错误: main.c:5:6:错误:’fname’中缺少数组大小 main.c:6:6:错误:’lname’中缺少数组大小 初始化时: int fname[]; int lname[]; 使用更高版本的gcc不再可能吗? 因为我确定我以前用过这个…… 编辑:我说我记得这个的原因是因为我甚至在这里看到它: http : //h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V40F_HTML/AQTLTBTE/DOCU_046.HTM

可以在没有明确大小的情况下初始化C中的二维数组吗?

我有一个关于C中的二维数组的问题。我现在知道(从直接编译器经验)我不能像这样一维数组初始化这样的数组: int multi_array[][] = { {1,2,3,4,5}, {10,20,30,40,50}, {100,200,300,400,500} }; > compiler output: gcc -o arrays arrays.c arrays.c: In function ‘main’: arrays.c:8:9: error: array type has incomplete element type 最接近的解决方案是明确提供列数如下: int multi_array[][5] = { {1,2,3,4,5}, {10,20,30,40,50}, {100,200,300,400,500} }; 我的问题是:如果不明确地提供数字(这毕竟编译器应该能够推断自己),它可以整齐地完成吗? 我不是在谈论用malloc或其他东西手工构建它,而是与我尝试的东西接近。 另外,对C编译器有所了解的人可以从低级别的角度解释为什么我的初始尝试不起作用吗? 我使用了没有非标准选项的普通gcc来编译代码。 谢谢

在C与C ++中初始化具有静态存储持续时间的对象

可能重复: 主要回报是什么? 例如,以下代码编译时没有任何警告: #include int i = i + 1; int main(int argc, char *argv[]) { fprintf (stderr, “%d\n”, i); return 0; } 我认为这在语法上是非法的,因为i在它被声明之前被使用,是不是? 在我看来, int i = i + 1; 肯定是一个错误,为什么编译器不警告它呢? 我使用gcc 4.5.1。

使用{0},{0,}进行数组初始化?

说我想初始化myArray char myArray[MAX] = {0}; char myArray[MAX] = {0,}; char myArray[MAX]; memset(myArray, 0, MAX); 它们是否相同或优先于另一个? 谢谢

二维数组值C ++

我想声明一个2D数组并为其赋值,而不运行for循环。 我以为我可以使用以下想法 int array[5] = {1,2,3,4,5}; 这也适用于初始化2Darrays。 但显然我的编译器不喜欢这个。 /* 1 8 12 20 25 5 9 13 24 26 */ #include int main() { int arr[2][5] = {0}; // This actually initializes everything to 0. arr [1] [] = {1,8,12,20,25}; // Line 11 arr [2] [] = {5,9,13,24,26}; return 0; } J:\ CPP \ Grid> […]