该代码从字面上从用户获得输入和分配是数组,它在在线gdb和极客健忘问题提交中工作?
int n;
int [n];
这是可行的!,而在我搜索过的地方,n的内部数组应该是一个常量。
这是我朋友写的问题和代码的链接。
代码
#include <stdio.h>
int main()
{
int t,n;
int rear;
int front;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
int a[n],s[
正如我们所知道的,我们可以使用int (*p)[10]来定义一个指向int10数组的指针,所以如果我们有p=0和sizeof(int)==4,p+1将是0+10*4 = 40,这是可行的,因为编译器在编译时知道p是什么。
如果我们这样做会怎么样:
int main()
{
int sz = 10;
int (*p)[sz];
}
换句话说,直到程序在那里运行,才会有人知道sz。我以为这不会起作用,但它确实起作用了..
所以我的问题是,它是如何工作的?我的意思是,在c中有没有地方可以在运行时存储值的类型?如果不是,这是如何工作的?这只是编译器相关的吗?
我正在使用gcc vers
import java.util.Scanner;
public class array2
{
public static void main(String[] args)
{
char choice = 'Y';
Scanner input = new Scanner(System.in);
int q=1;
int j=0;
String[] name = new String[q];
while (choice == 'Y' || choice == 'y'){
我为C& C++尝试了相同的程序,即将2D数组传递给函数。下面的程序在C语言中工作,但在C++中不工作,请解释为什么?
在C中
#include<stdio.h>
void pass(int n, int arr[][n]) // or void pass(int n, int (*arr)[n])
{
printf("%d",arr[0][0]);
//.....
}
int main()
{
int n;
scanf("%d",&n);
int arr[n][n];
arr[0][0]=0;
pass(n,arr);
r
所以我和我的朋友聊天,帮她写了一段代码,我总是认为数组需要是编译时常量,因为它们在堆栈上。但她说她的朋友是用下面的代码做的:
#include <iostream.h>
#include <stdlib.h>
int main()
{
int value = ' ' ;
int sum = 0;
int count = 0;
cout<<"Please enter the total number of employees" <<endl;;
cin>> valu
#include <stdio.h>
#include <stdlib.h>
const int N = 5;
int main()
{
int vett[N] = {1, 2, 3, 4, 5};
return 0;
}
代码的这一部分有什么问题?编译器向我报告这些错误和警告:
error: variable-sized object may not be initialized
warning: excess elements in array initializer [enabled by default]
warning: (near ini
所以,我有Students.java和TestStudents.java。我应该创建3个学生对象,然后给他们分配3-5个类(courseName、creditHours和letterGrade),然后打印出这5个班级的平均成绩。我创造了学生,但我迷失了的是用与每个学生相关的课程信息来填充数组。我想我开发了一个带有数组的弱点,我理解使用循环来填充它--但是循环的参数是什么,以及如何使数组针对每个学生呢?
我面临的另一个挑战是,没有人确切地告诉我这门课在做什么,只是它是必要的,显然包含了computeGPA方法
import codelibraries.chp10.Course;
public c
下面是我的代码,我得到了一些错误。有人能帮我理解一下这些错误吗?
结构清单:
struct List{
int size;
int arr[];
};
附加功能:
int [] append(struct List a2, int a) {
int size = a2.size + sizeof(int);
int p [size]; //= (int *)malloc(size);
for(int i = 0; i < size; i++ ){
p[i] = a2.arr[i];
if (i > a2.si
我正在尝试初始化一个数组和它包含的结构
#include <stdio.h>
#include <math.h>
typedef struct
{
int rgbtBlue;
int rgbtGreen;
int rgbtRed;
} __attribute__((__packed__))
RGBTRIPLE;
void edges(int height, int width, RGBTRIPLE image[height][width]);
int main()
{
int height = 3;
int width
为什么要这么做?
#include <iostream>
int main()
{
std::cout << "Enter a number: ";
int arraySize;
std::cin >> arraySize;
int array[arraySize];
for(int element : array)
{
element = 42;
std::co
我以为我理解VLA是什么,直到我在这里看到一个关于动态内存分配与可变长度数组之间的区别的问题。因此,我在动态内存分配方面没有任何问题,至少目前是这样,但我不理解的是,为什么这段代码被认为是VLA:
int size = 10; // or whatever
int my_array [size] ; // why this is a VLA
更神秘的是,这甚至被认为是VLA。
const int size = 10;
int my_array [size]; // why even when i use a const it is a VLA .
所以,我的问题是,这两种不同的方法是如何被认
有两种方法可以将内存分配给数组,其中的大小在开始时是未知的。最常见的方法是像这样使用malloc
int * array;
... // when we know the size
array = malloc(size*sizeof(int));
但是在C99中,在我们知道大小之后定义数组也是有效的。
... // when we know the size
int array[size];
他们的和完全一样吗?
经过3个小时的尝试,我决定在这里问一问,看看是否有人能为这个错误提供一个解决方案:java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
这是我的密码
public class ParcelAdapter extends BaseAdapter{
private final Activity context;
ParcelPOJO.Data items=new ParcelPOJO.Data();
ParcelAdapter(Activity context, ParcelP
我想在下面的jsp页面中列出存储在数据库中的标记:
<div id="site_content"> <%-- Put the tags under this tag --%>
<%!
GetTagsFromDatabase gtfd = new GetTagsFromDatabase();
String tags[] = gtfd.getTags();
%>
<%
for(int i = 0 ; i <=
给出一组基本的C代码:
int a = 5;
int b[a] = {1,2,3,4,5};
为什么会产生这个错误?
$gcc -o demo demo.c
error: variable-sized object may not be initialized
我知道这是一件坏事,编译器不会让你这么做的。然而,作为一名教师,我很难解释为什么你不能也不应该这样做。
(假设为C99)
你如何解释这里发生的事情?
我对C中的数组声明有点困惑,我知道可以这样做:
int a[20]; // Reserved space for 20 int array
int b[] = {32, 431, 10, 42}; // Length in square brackets is auto-calculated
int *c = calloc(15, sizeof(int)); // Created a pointer to the dynamic int array
但这样做有可能吗?
int my_array[sizeof(int) * 5];
它是一个有效的代码,还是数组长度应该是一个常量表达式(在A
在C语言中,我知道当使用malloc动态初始化变量时,它会存储在堆区域中。但是,当完成以下类型的声明并稍后初始化变量时,内存分配在哪里。
int a[26];
或
int a[n]; //n is a variable and each element in array a is later initialized through a for loop.
我最初的理解是,就像在java中一样,这里主函数中声明的所有变量都存储在堆栈区域中。我的疑问是--比如说,有一个函数接受数组"a“的地址并更改其内容。要更改"a“的内容,它应该能够访问"a”中每个元素的地址。由于函数本
我读到了关于在C中动态创建数组的内容,所以正确的方法如下所述:
int n;
scanf("%d", &n);
int *arr = (int*)malloc(n*sizeof(int));
但我想如果我能做这样的事-
int n, i, sum=0;
scanf("%d", &n);
int arr[n];
我编译并运行它,没有任何错误。所以,我的问题是为什么我要使用malloc()?这与旧的和新的C版本有关吗?