C :: Size Of Struct With Variable Length Array?
Mar 6, 2015
The WinAPI has a struct like this for raw input:
Code:
typedef struct tagRAWINPUT { RAWINPUTHEADER header;
union {
RAWMOUSE mouse;
RAWKEYBOARD keyboard;
RAWHID hid;
} data;
[code]...
The definition of the struct doesn't show it but the documentation says that bRawData is variable length. sizeof(RAWINPUT) will not be the correct size when the data field is of RAWHID type so how do you allocate a variable with automatic storage type that has the right size for the entire struct? You can get a header that has the size for the entire struct but how do you actually allocate storage space for the data without using malloc? I've seen some example code that used a char array but that violates aliasing rules and there are also alignment issues with that approach.
View 5 Replies
ADVERTISEMENT
Jan 23, 2015
I'm trying to make an application and I need the length of the array of a struct. Like this:
struct myStruct {
int integer;
};
myStruct struct[] =
{
1,
2,
};
I want to get how many ints are in the array...
View 2 Replies
View Related
Mar 2, 2013
This problem is best explained by looking at its output below. I stored 15 different values but when retrieved some are wrong.
#include <iostream>
using namespace std;
class A {
public:
int ** pointer;
[Code] ....
I need to store and retrieve the 15 different values correctly. How to solve this? The main thing is, I need to store the pointer in class A objects.
View 6 Replies
View Related
Nov 13, 2013
This code snippet compiles and runs fine
Code:
#include <stdio.h>
int main(void) {
int i, a[i];
i=2;
for(int n=0; n<=i; n++)
a[n]=0;
[Code] .....
It prints out 3 "0", but when slightly changed
Code:
#include <stdio.h>
int main(void) {
int i, a[i];
i=200;
for(int n=0; n<=i; n++)
[Code] ....
It compiles fine but core dumps when run, how come? i'm using gcc version 4.4.7, and compiling like this
gcc -std=c99 test.c -o test
View 14 Replies
View Related
Oct 10, 2013
I believe that everything is fine except that I can think of the condition can be inserted inside the parentheses ..
#include <iostream>
using namespace std;
int main() {
int i=0, k=0;
char *string_n, **matrix, temp;
[code].....
View 2 Replies
View Related
Nov 28, 2013
I want to ask for a number as an input during runtime and then create an 2-dimensional array of size as specified by user. i.e. if the user inputs 3, the array should be of size 3X3, and likewise...
View 9 Replies
View Related
Sep 14, 2014
#include <stdio.h>
#define MAX_USERS 20
struct {
char ID[10];
char Name[40];
int Pos;
[Code] .....
I was attempting something weired with address to move data around when I discovered that the size of the array is not what I expected. I am passing this structure as &Users to a function that declares it as a void *, then I can deal with chunks of data (memmove) and not have to worry about index or things like that. However...sizeof is returning something I do not understand.
View 9 Replies
View Related
Nov 30, 2013
How do I insert a array size as variable?
View 5 Replies
View Related
Jan 29, 2015
I am wondering how I could make an array which contains arrays, but with a variable size.My first try..
Code:
int array[][] = {{1}, {2}};
But this isn't proper
View 2 Replies
View Related
Mar 1, 2013
I have a function like this
void foo( int i) {
...
uint8_t buf[ i];
...
}
And I don't understand why the compiler is not complaining... I'm using g++ -c -g -Wall to compile ....
View 2 Replies
View Related
Jul 11, 2013
I was wondering why, in C, the sizeof of a struct is larger than the the sum of all the sizeofs of it's members. It only seems to be by a few bytes, but as a bit of a perfectionist I fine this a bit annoying.
View 1 Replies
View Related
May 10, 2013
I am new to C. I've been trying to use C to code some statistical functions originally coded in R. I've encountered an interesting phenomenon. In the function foo1, I declared the array v1v2b using an actual value 1999000. The function runs fine when I call it in R.
Code:
void foo1(double *x, double *y, int *nsamp){
int i, j, k, oper=2, l;
double* v1v2=malloc(sizeof(double)*((*nsamp)*(*nsamp-1)/2 + 1));
outer_pos(x, y, nsamp, &v1v2[0]);
double v1v2b[1999000]; //<-------HERE
for(i=1; i<= 1999000]; i++){
v1v2b[i-1]=1;
} }
However, in foo2, I first create an integer variable called index, and store the value 1999000 in it. I then use it to initialize the same array. When I tried calling this function in R, it either led to a stack overflow error, or completely crashed R.
Code:
void foo2(double *x, double *y, int *nsamp){
int i, j, k, oper=2, l;
double* v1v2=malloc(sizeof(double)*((*nsamp)*(*nsamp-1)/2 + 1));
[Code] .....
View 9 Replies
View Related
Dec 7, 2013
For my default constructor I need to set an array of strings to null and the size variable to 0. Here is my code for that
DynamicStringArray::DynamicStringArray() {
*DynamicArray[]=NULL;
size=0;
}
When I try and compile it I get an "expected primary expression before ']' token" error.
View 1 Replies
View Related
May 22, 2013
I am writing a raytracer, and currently I'm working on creating a bounding volume hierarchy to accelerate the process. To do this, I am first creating a vector that holds each of the objects in the scene, and passing this vector to the constructor for my BVH.
Code:
//in header
BVH_Node* bvh;
//in main raytrace function
[Code] .....
I am testing a scene that has only 2 objects, and so it goes to the size == 2 check. The first time it hits makeLeaf(), I segfault. I've used both gdb and valgrind, and of course it's a memory mapping error. gdb's backtrace tells me that the length of the vector I've passed in is -805305610 and the capacity is -21, and that it is inside my makeLeaf() function that the error occurs.
Here's the function:
Code:
BVH_Node* BVH_Node::makeLeaf(GeomObj* v){
BVH_Node* node;
node->obj = v;
node->isObj = true;
return node;
}
The segfault happens at
Code: node->obj = v;
If I run my raytracer without a BVH, the objList works perfectly.
View 8 Replies
View Related
Oct 24, 2014
How do you prompt the user to enter the number of elements for the array and use that information to creatr a variable length array? And then how do you prompt the user to enter in a number for each element of the array and scan in the appropriate numbers? the numbers are double precision floating point.
for example,
Enter the numbe of elements in the array: 3
Enter element 0: 3
Enter element 1: -1
Enter element 2: 4
I know it starts with
int main() {
double N;
int a[size];
printf("Enter the number of elements in the array:" );
scanf("%f", &size);
//I'm pretty sure this is wrong
View 8 Replies
View Related
Aug 25, 2013
I intend to reference this thread from another thread so I do not clutter that thread with code
/* This code is relied on by some of the functions I will post */
typedef unsigned long long zxumax;
typedef signed long long zxsmax;
[Code]....
View 13 Replies
View Related
Aug 25, 2013
I already have the standard one that mimics the one taught in schools written but I've found that there is a faster formula that can be used however I not sure how to implement this. The formula is called the "Fast Fourier Transform", any simplistic example using this function base:
typedef unsigned int uint;
typedef unsigned char uchr;
uint umul( uint* src, uint val ) {
uint des = *src;
[Code] ....
If you're doing the buffer based functions then I have some pre-made functions you may need. [URL]
View 6 Replies
View Related
Aug 24, 2013
On a controlled buffer of unsigned char it is possible to do subtraction faster than if you followed standard mathematical rules, here is an example:
typedef unsigned char uchr;
uchr num1 = 5; //00000101
uchr num2 = 3; //00000011
num2 = ~num2; // 11111100
++num2; // 11111101
uchr num3 = num1 + num2; // 00000010(2) - computer truncates result to fit char
Since you will be working with a buffer you don't even need to worry about truncating the final bit because the add function will not be able to reach it - unless it is given the ability to grow the buffer in which case you just set the bit to 0 yourself
View 8 Replies
View Related
Dec 1, 2013
how to insert a variable for the size of array and prompt user to insert the elements for the array?
View 13 Replies
View Related
Dec 25, 2014
What I'm trying to do is to assign the length of a string to an integer variable. This is what i tried, it did not work.
Code:
printf("Enter a string
");
fgets(test_pass, 30, stdin);
strcpy(x,(strlen(test_pass)));
printf("%d", x);
This was just a test, and it did not compile. How to do this?
View 4 Replies
View Related
Dec 14, 2014
I'm having trouble figuring out how to find the size of an array program that involves "struct."
#include <iostream>
using namespace std;
struct d{
char* a;
float b;
int c;
[code].....
When I run this program, the output is 80(for my compiler). That would mean that each element in the array is 16 bytes but I don't understand how struct d is 16 bytes.
View 1 Replies
View Related
Apr 20, 2013
typedef struct Element Element;
struct Element {
char x;
double* y;
[Code] .....
This one with y pointer gives 8
typedef struct Element Element;
struct Element {
char x;
double y;
[Code] ....
This one with a normal y variable gives 12
View 7 Replies
View Related
Feb 9, 2015
I'd wrote a program to encrypt a message within a bmp file using my own structs and all for everything (yes, call me a ........head) The program works but for some weird ........ing reason I was forced to subtract 2 bytes from the header size to get the correct value. I've narrowed down the issue to my BmpFileHeader struct.
Here's a short program that demonstrates the issue:
Code:
#include <stdio.h>
#include <stdlib.h>
#define BYTE unsigned char
#define WORD unsigned short
#define DWORD unsigned long
#define LONG signed int
[Code] .....
Tried with both gcc and TinyCC and got the same result so it doesent seem to be a compiler bug. Microsoft's structures though are giving the correct size, even though they have the exact same definition.
Microsoft's defines:
Code:
// windef.h
typedef unsigned long DWORD;
typedef unsigned char BYTE;
typedef unsigned short WORD;
[Code] .....
View 5 Replies
View Related
May 10, 2014
I would like to create a table but I dont know how big. Thats why I want to use variable to describe its size. Something like that:
int x = 5; //I will use a function to set x
int Table[x];
What should I do to make it work?
View 4 Replies
View Related
Jan 21, 2013
In a function, I have a static variable that I want to assign the time in seconds when a certain condition is met and keep that value until a different condition is met. The time value is a struct. Since now->sec is always incrementing, will timeWhenEventMadeActive below hold onto the initial value or will it increment every time the function is called? I cant seem to test this.
static time_t timeWhenEventMadeActive = 0;
static bool initTime = 0;
if (!initTime) {
timeWhenEventMadeActive = now->sec; //holds uptime value in seconds
[Code] .....
View 1 Replies
View Related
Mar 12, 2014
This is with Linux gcc
Code:
typedef struct _a
{
int id;
} a;
typedef struct _b
{
a my_a;
my_a.id = 1; // error: expected specifier-qualifier-list before "my_a"
} b;
I get error: expected specifier-qualifier-list before "my_a"
I must set the id for the kind of struct created inside the struct def because main() will be casting based on this id. Thats how I will know which structure b contains by it's id, there could be hundards of different structs with different values I will cast to the correct one and know it's members by it's id. How do I ?
View 10 Replies
View Related