473,323 Members | 1,537 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,323 software developers and data experts.

pointer to an array -Is there an out of bound access?

int main (){

int a[][3]={{1,2,3},{4,5,6}};
int (*ptr)[3]=a;

/* This should be fine and give 3 as output*/
printf("%d\n",(*ptr)[2]);

++ptr;

/* This should be fine and give 6 as output*/
printf("%d\n",(*ptr)[2]);

return 0;
}

But what if I do something like this

int main (){

int a[][3]={{1,2,3},{4,5,6}};
int (*ptr)[3]=a;

/* This should be fine and give 3 as output*/
printf("%d\n",(*ptr)[2]);

/* Will this be fine??
printf("%d\n",(*ptr)[5]);
return 0;
}

Is the second printf call in second code fine? or is it out of bound
access?
I tried both the codes with gcc 3.4.5 with -Wall and -pedantic. There
was no warning and got the correct output as 3 and 6 in both codes.

Oct 28 '06 #1
24 1925


On Oct 28, 11:43 am, "Kavya" <Lerne...@gmail.comwrote:
int main (){

int a[][3]={{1,2,3},{4,5,6}};
int (*ptr)[3]=a;

/* This should be fine and give 3 as output*/
printf("%d\n",(*ptr)[2]);

++ptr;

/* This should be fine and give 6 as output*/
printf("%d\n",(*ptr)[2]);

return 0;

}But what if I do something like this

int main (){

int a[][3]={{1,2,3},{4,5,6}};
int (*ptr)[3]=a;

/* This should be fine and give 3 as output*/
printf("%d\n",(*ptr)[2]);

/* Will this be fine??
printf("%d\n",(*ptr)[5]);
return 0;

}Is the second printf call in second code fine? or is it out of bound
access?
I tried both the codes with gcc 3.4.5 with -Wall and -pedantic. There
was no warning and got the correct output as 3 and 6 in both codes.
It's out.
I also use gcc and got the following:

3
-1074239864

.. In fact, 'ptr' is NOT a common int pointer. See the following:

int *p = (int*)a;
printf("%d\n", p[5]);

That's OK, because 'p' is a common int pointer.

Oct 28 '06 #2
Kavya:
int main (){

int a[][3]={{1,2,3},{4,5,6}};

Equivalent to:

int a[2][3] = {{1,2,3},{4,5,6}};

int (*ptr)[3]=a;

Equivalent to:

int (*ptr)[3] = &a[0];

/* This should be fine and give 3 as output*/
printf("%d\n",(*ptr)[2]);

Equivalent to:

printf("%d\n", a[0][2]);

++ptr;

Equivalent to:

ptr = &a[1];

/* This should be fine and give 6 as output*/
printf("%d\n",(*ptr)[2]);

Equivalent to:

printf("%d\n", a[1][2]);

return 0;
}

That works fine.

But what if I do something like this

int main (){

int a[][3]={{1,2,3},{4,5,6}};
int (*ptr)[3]=a;

/* This should be fine and give 3 as output*/
printf("%d\n",(*ptr)[2]);

/* Will this be fine??
printf("%d\n",(*ptr)[5]);

Basically you're asking if the Standard necessitates that multi-dimensional
arrays be lain out in a particular way in memory, specifically:

a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2]

I'm pretty sure that things have to be like this, but maybe someone can
give a quote from the Standard proving or disproving the necessity.

--

Frederick Gotham
Oct 28 '06 #3
Frederick Gotham:
Basically you're asking if the Standard necessitates that
multi-dimensional arrays be lain out in a particular way in memory,
specifically:

a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2]

I'm pretty sure that things have to be like this, but maybe someone can
give a quote from the Standard proving or disproving the necessity.

I actually, if I put a tad bit of thought into it, I don't need to consult
the Standard.

We know that:

(1) There cannot be padding between array elements or after.
(2) Each consecutive array element must have ascending addresses.

Also, there's no such thing as multi-dimensional arrays in C, but rather
arrays of arrays. Therefore, looking at the first array:

int (a[2])[3];

We know that the three elements in this array must not have padding between
them, and that their addresses must be ascending. Now, if we look at the
array type, we see that each element is an int[2]. We know that this inner
array must also have no padding between elements, and also that the
addresses must be ascending.

Therefore, the memory layout I showed above is necessitated by the
Standard.

--

Frederick Gotham
Oct 28 '06 #4
Frederick Gotham said:

<snip>
Also, there's no such thing as multi-dimensional arrays in C
Utter bilge.
From C89's 3.3.2.1 Array subscripting:

Successive subscript operators designate a member of a multi-dimensional
array object.

From C99's 6.5.2.1 Array subscripting:

Successive subscript operators designate an element of a multidimensional
array object.
If the Standard says C has multi-dimensional arrays, C has multi-dimensional
arrays.

--
Richard Heathfield
"Usenet is a strange place" - dmr 29/7/1999
http://www.cpax.org.uk
email: rjh at above domain (but drop the www, obviously)
Oct 28 '06 #5
Richard Heathfield:
>Also, there's no such thing as multi-dimensional arrays in C

Utter bilge.

Yes, you're right.

From C89's 3.3.2.1 Array subscripting:

Successive subscript operators designate a member of a multi-dimensional
array object.

Indeed they do.

From C99's 6.5.2.1 Array subscripting:

Successive subscript operators designate an element of a
multidimensional array object.

Again, you're right.

If the Standard says C has multi-dimensional arrays, C has
multi-dimensional arrays.

Yes you're right. But how exactly do these multi-dimensional arrays work?

Do you think it's right to say that, other than the proton and the
electron, that there's a third kind of particle within the atom? Some would
say yes, the neutron. Others would say no, because a neutron is little more
than an electron and a proton bound together.

So, I say that a multi-dimensional array is merely an array of arrays. And
guess what, that way of thinking works well for me.

If the Standard, or you for that matter, would like to say that there are
multi-dimensional arrays in C, then go ahead, you're right; but as far as
the grammar of the C programming language goes, they work like an array of
arrays.

--

Frederick Gotham
Oct 28 '06 #6
On Sat, 28 Oct 2006 10:57:12 GMT, Frederick Gotham
<fg*******@SPAM.comwrote:
>Frederick Gotham:
>Basically you're asking if the Standard necessitates that
multi-dimensional arrays be lain out in a particular way in memory,
specifically:

a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2]

I'm pretty sure that things have to be like this, but maybe someone can
give a quote from the Standard proving or disproving the necessity.


I actually, if I put a tad bit of thought into it, I don't need to consult
the Standard.

We know that:

(1) There cannot be padding between array elements or after.
(2) Each consecutive array element must have ascending addresses.

Also, there's no such thing as multi-dimensional arrays in C, but rather
arrays of arrays. Therefore, looking at the first array:

int (a[2])[3];

We know that the three elements in this array must not have padding between
them, and that their addresses must be ascending. Now, if we look at the
array type, we see that each element is an int[2]. We know that this inner
array must also have no padding between elements, and also that the
addresses must be ascending.
I agree with your intent but I think you would have been closer to the
point you were trying to make to say the first array has two elements,
each of which is an int[3] and then proceed to discuss the absence of
padding between a[0] and a[1] followed by the combined effects of
aligning a[i] and a[i][0] and the absence of padding between a[i][j]
and a[i][j+1].
>
Therefore, the memory layout I showed above is necessitated by the
Standard.
But if the compiler performs range checking on constant subscripts or
inserts range checking into the executable code, it would compliant to
issue a diagnostic and reject the translation unit or terminate the
execution of the program for a serious run time error, respectively.
Remove del for email
Oct 28 '06 #7
Richard Heathfield <in*****@invalid.invalidwrites:
[...]
From C89's 3.3.2.1 Array subscripting:

Successive subscript operators designate a member of a multi-dimensional
array object.

From C99's 6.5.2.1 Array subscripting:

Successive subscript operators designate an element of a multidimensional
array object.
If the Standard says C has multi-dimensional arrays, C has
multi-dimensional arrays.
Yes, but it's really just a matter of terminology. If the C standard
didn't mention multidimensional arrays, or even if it explicitly
stated "The C language does not have multidimensional arrays, but it
does have arrays of arrays", then it would still describe exactly the
same language.

You can declare an array of arrays. The question of whether you can
call that a multidimensional array has a clear answer (yes, because
the standard says so), but it's not a very important question.

Note that some languages do support multidimensional arrays as a
distinct concept; arr1[x][y] indexes into an array of arrays, and
arr2[x,y] indexes into a two-dimensional array. C, of course, doesn't
do this (and the existence of the comma operator makes arr2[x,y] a
trap for the unwary).

Digression follows.

Similarly, we say that C *doesn't* have pass-by-reference because the
standard doesn't use that term. But if the standard referred to
passing a pointer-to-foo as passing the foo by reference, then we'd
have to say that C *does* support pass-by-reference. In fact, C does
support pass-by-reference *as a programming technique*, but not as a
language construct.

--
Keith Thompson (The_Other_Keith) ks***@mib.org <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <* <http://users.sdsc.edu/~kst>
We must do something. This is something. Therefore, we must do this.
Oct 28 '06 #8
Keith Thompson said:

<snip>
Digression follows.

Similarly, we say that C *doesn't* have pass-by-reference because the
standard doesn't use that term. But if the standard referred to
passing a pointer-to-foo as passing the foo by reference, then we'd
have to say that C *does* support pass-by-reference. In fact, C does
support pass-by-reference *as a programming technique*, but not as a
language construct.
As you probably recall, I think it is easier to explain parameter-passing to
a newbie if one sticks strictly to the "pass-by-value" terminology, even
when pointers are being passed. There is no need to make an exception for
pointers, and to do so leads to confusion, as we occasionally see in
questions on this newsgroup.

--
Richard Heathfield
"Usenet is a strange place" - dmr 29/7/1999
http://www.cpax.org.uk
email: rjh at above domain (but drop the www, obviously)
Oct 28 '06 #9
Richard Heathfield <in*****@invalid.invalidwrites:
Keith Thompson said:
<snip>
>Digression follows.

Similarly, we say that C *doesn't* have pass-by-reference because the
standard doesn't use that term. But if the standard referred to
passing a pointer-to-foo as passing the foo by reference, then we'd
have to say that C *does* support pass-by-reference. In fact, C does
support pass-by-reference *as a programming technique*, but not as a
language construct.

As you probably recall, I think it is easier to explain parameter-passing to
a newbie if one sticks strictly to the "pass-by-value" terminology, even
when pointers are being passed. There is no need to make an exception for
pointers, and to do so leads to confusion, as we occasionally see in
questions on this newsgroup.
I think it depends on the newbie. For someone who's learning to
program for the first time, it probably makes sense to stick to the
idea of "pass-by-value", and later introduce the idea that passing
pointers by value can be a useful technique if you want to modify the
pointed-to object.

On the other hand, someone who's new to C, but has experience in some
other language that *does* directly support pass-by-reference, will
likely find it useful to know that passing a pointer is the way to
implement the equivalent of pass-by-reference in C. (When I first
learned C, most of my programming experience was in Pascal.)

I might also argue that pass-by-reference is a useful concept in
computer science in general, independent of any particular language,
and it's useful to see how that concept is mapped onto the constructs
of a particular language.

C doesn't "have" linked lists, binary trees, or pass-by-reference.
You can implement them all using pointers. If I present a chunk of C
code that implements a linked list and say "This is a linked list",
nobody is going to jump up and say "No, C doesn't have linked lists;
that's just a structure with a pointer in it and some functions that
operate on it".

But that's not a perfect analogy, and I can certainly see your point.

--
Keith Thompson (The_Other_Keith) ks***@mib.org <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <* <http://users.sdsc.edu/~kst>
We must do something. This is something. Therefore, we must do this.
Oct 28 '06 #10
Barry Schwarz:
>>Therefore, the memory layout I showed above is necessitated by the
Standard.

But if the compiler performs range checking on constant subscripts or
inserts range checking into the executable code, it would compliant to
issue a diagnostic and reject the translation unit or terminate the
execution of the program for a serious run time error, respectively.

Wha. . . ? Sounds a bit drastic. Are you sure the compiler is entitled to
do that even when you definitely should be able to do what you're trying to
do? Consider the following code for instance; it's not exactly politically
correct, but there shouldn't be a problem with it.

#include <stdlib.h>
#include <stdio.h>
#include <assert.h>

int main(void)
{
assert( sizeof(double) sizeof(int) );

{ /* Start */

double *p;
int *q;
char unsigned const *pover;
char unsigned const *ptr;

p = malloc(5 * sizeof*p);
q = (int*)p++;
pover = (char unsigned*)(p+4);
ptr = (char unsigned*)p;
p[3] = 2423.234;
*q++ = -9;

do printf("%d",(int)*ptr++);
while (pover != ptr);

return 0;

} /* End */
}
The code might look a bit weird, but that shouldn't entitle a compiler to
do whatever it wants with it.

--

Frederick Gotham
Oct 28 '06 #11
Frederick Gotham:
p = malloc(5 * sizeof*p);

if (!p) return EXIT_FAILURE;
return 0;

free(--p);
return 0;

--

Frederick Gotham
Oct 28 '06 #12
Frederick Gotham wrote:
Do you think it's right to say that, other than the proton and the
electron, that there's a third kind of particle within the atom? Some would
say yes, the neutron. Others would say no, because a neutron is little more
than an electron and a proton bound together.
A neutron is nothing at all like an electron and a proton bound
together (whatever that means). What have you been smoking?

Oct 29 '06 #13
Frederick Gotham said:
Barry Schwarz:
>>>Therefore, the memory layout I showed above is necessitated by the
Standard.

But if the compiler performs range checking on constant subscripts or
inserts range checking into the executable code, it would compliant to
issue a diagnostic and reject the translation unit or terminate the
execution of the program for a serious run time error, respectively.


Wha. . . ? Sounds a bit drastic. Are you sure the compiler is entitled to
do that even when you definitely should be able to do what you're trying
to do?
Yes, the compiler is entitled to do that, and exceeding bounds is not
something you should definitely be able to do.

Consider the following code for instance; it's not exactly
politically correct, but there shouldn't be a problem with it.
If you want help with your code, don't obfuscate it, and don't hurl insults
at the very people who can help you.

--
Richard Heathfield
"Usenet is a strange place" - dmr 29/7/1999
http://www.cpax.org.uk
email: rjh at above domain (but drop the www, obviously)
Oct 29 '06 #14
Kavya wrote:
int main (){

int a[][3]={{1,2,3},{4,5,6}};
int (*ptr)[3]=a;

/* This should be fine and give 3 as output*/
printf("%d\n",(*ptr)[2]);

/* Will this be fine??
printf("%d\n",(*ptr)[5]);
return 0;
}

Is the second printf call in second code fine?
or is it out of bound access?
It's an out of bound access.
I tried both the codes with gcc 3.4.5 with -Wall and -pedantic. There
was no warning and got the correct output as 3 and 6 in both codes.
That's the point of programmers learning the language better.

--
pete
Oct 29 '06 #15
Kavya wrote:
I tried both the codes with gcc 3.4.5 with -Wall and -pedantic. There
was no warning and got the correct output as 3 and 6 in both codes.
Sometimes you can get lucky with undefined behavior. Nothing to see
here, folks. Move along.
Oct 29 '06 #16
Frederick Gotham wrote:
...
I actually, if I put a tad bit of thought into it, I don't need to consult
the Standard.

We know that:

(1) There cannot be padding between array elements or after.
(2) Each consecutive array element must have ascending addresses.

Also, there's no such thing as multi-dimensional arrays in C, but rather
arrays of arrays. Therefore, looking at the first array:

int (a[2])[3];

We know that the three elements in this array must not have padding between
them, and that their addresses must be ascending. Now, if we look at the
array type, we see that each element is an int[2]. We know that this inner
array must also have no padding between elements, and also that the
addresses must be ascending.

Therefore, the memory layout I showed above is necessitated by the
Standard.
...
The memory layout is indeed necessitated by the standard, but the issue here is
not limited to the memory layout. The formal issue here is in fact the same as
with the recently-discussed "struct hack". It, once again, depends on the
intended meaning of the pointer arithmetic rules. When applied to indexing an
array object, were they supposed to refer to the declared size of the array
object or the actual size of the underlying memory block? The standard itself
does not answer that question explicitly (neither C89/90 nor C99). (Several
people here insisted that it does, but no one was able to produce a convincing
quote.) However, it is informally known that the intent was to limit the pointer
arithmetic for such cases with the _declared_ size of the array object.

Applied to the OP's example, this means that accessing, say, '(*ptr)[5]' when
'ptr' is declared as 'int (*ptr)[3]' is illegal. Attempts to tie this formal
requirement to practice usually insist that implementation is allowed to
represent the '*ptr' value is a way that only allows access to elements in 0-2
range (exactly the same reasoning as with the "struct hack"). Once again, this
is based on the aforementioned "informally canonical" interpretation of the
address arithmetic rules.

As an interesting side note, IIRC, Stroustrup's C++ book includes (-ed?) an
example where a multi-dimensional array is actually accessed in that "illegal"
fashion, even though C++'s address arithmetic rules are no different from C's.

--
Best regards,
Andrey Tarasevich
Oct 31 '06 #17
Andrey Tarasevich:
Applied to the OP's example, this means that accessing, say, '(*ptr)[5]'
when 'ptr' is declared as 'int (*ptr)[3]' is illegal. Attempts to tie
this formal requirement to practice usually insist that implementation
is allowed to represent the '*ptr' value is a way that only allows
access to elements in 0-2 range (exactly the same reasoning as with the
"struct hack"). Once again, this is based on the aforementioned
"informally canonical" interpretation of the address arithmetic rules.

What about the following, is it OK?

int arr[2][2];

int *p = *arr;

p[3] = 8;

If it is OK, then the following should be OK aswell:

arr[0][3] = 8;

, because the compiler must treat it as:

*( *(arr+0) + 3)

arr decays to a pointer to its first element, an R-value of type int(*)[2]
It then has zero added to it, which has no effect.
It is then dereferenced, yielding an L-value of type int[2]
It then decays to a pointer to its first element, an R-value of type int*
It then has 3 added to it
It is then dereference, yielding an L-value of type int.

Even when we use "arr" directly, I don't see the problem.

--

Frederick Gotham
Oct 31 '06 #18
Frederick Gotham said:
What about the following, is it OK?

int arr[2][2];

int *p = *arr;

p[3] = 8;
No, for reasons that have already been explained ad nauseam.

--
Richard Heathfield
"Usenet is a strange place" - dmr 29/7/1999
http://www.cpax.org.uk
email: rjh at above domain (but drop the www, obviously)
Oct 31 '06 #19
Richard Heathfield:
Frederick Gotham said:
>What about the following, is it OK?

int arr[2][2];

int *p = *arr;

p[3] = 8;

No, for reasons that have already been explained ad nauseam.

Then how can we treat any chunk of memory as if it's an array of unsigned
char?

--

Frederick Gotham
Oct 31 '06 #20
Frederick Gotham said:
Richard Heathfield:
>Frederick Gotham said:
>>What about the following, is it OK?

int arr[2][2];

int *p = *arr;

p[3] = 8;

No, for reasons that have already been explained ad nauseam.


Then how can we treat any chunk of memory as if it's an array of unsigned
char?
Because the Standard says we can.

--
Richard Heathfield
"Usenet is a strange place" - dmr 29/7/1999
http://www.cpax.org.uk
email: rjh at above domain (but drop the www, obviously)
Oct 31 '06 #21
2006-10-31 <PD*******************@news.indigo.ie>,
Frederick Gotham wrote:
Richard Heathfield:
>Frederick Gotham said:
>>What about the following, is it OK?

int arr[2][2];
int *p = *arr;
p[3] = 8;

No, for reasons that have already been explained ad nauseam.

Then how can we treat any chunk of memory as if it's an array of unsigned
char?
Not to mention, there's not a whole heck of a lot of point to forbidding
arrays from having padding at the end other than to guarantee the above.

What else could array padding break?
Oct 31 '06 #22
Frederick Gotham wrote:
Richard Heathfield:
Frederick Gotham said:
What about the following, is it OK?

int arr[2][2];

int *p = *arr;

p[3] = 8;
No, for reasons that have already been explained ad nauseam.


Then how can we treat any chunk of memory as if it's an array of
unsigned char?

I don't see you doing that.

Brian
Oct 31 '06 #23
2006-10-31 <4q************@individual.net>,
Default User wrote:
Frederick Gotham wrote:
>Richard Heathfield:
Frederick Gotham said:
What about the following, is it OK?
int arr[2][2];
int *p = *arr;
p[3] = 8;

No, for reasons that have already been explained ad nauseam.

Then how can we treat any chunk of memory as if it's an array of
unsigned char?

I don't see you doing that.
OK, so is int *p = (int *)(unsigned char *)*arr; p[3] = 8; legal?
Oct 31 '06 #24
I normally don't monitor comp.lang.c, but since you brought this issue
over to comp.std.c and comp.std.c++, and mentioned your discussions on
comp.lang.c, I thought I should check them out. Oddly enough, I found
that you had written something that has nothing to do with C, that
needs to be corrected. I apologize for the off-topic nature of this
message, but posting it to this newsgroup is the only way to ensure
that it is read by the same people who read the original comment, and
might have been mislead by it.

Frederick Gotham wrote:
Richard Heathfield:
....
If the Standard says C has multi-dimensional arrays, C has
multi-dimensional arrays.


Yes you're right. But how exactly do these multi-dimensional arrays work?

Do you think it's right to say that, other than the proton and the
electron, that there's a third kind of particle within the atom? Some would
say yes, the neutron. Others would say no, because a neutron is little more
than an electron and a proton bound together.
An electron is a lepton; neither protons nor neutrons contain any real
leptons. A proton consists of two up quarks and one down quark. A
neutron consists of one up quark and two down quarks. There is a
nuclear reaction that is incorrectly described as electron capture,
whereby an electron and a proton react to produce a neutron, but what
is incorrect about that description is that the process also produces a
neutrino, which is really just a different form of the same lepton that
was an electron coming into the reaction.

There are many complicated Feynman diagrams contributing to the cross
section for this reaction, but the dominant and simplest one can be
described as follows: an electron converts into a neutrino, giving off
a W- particle. The W- particle is the carrier for the weak nuclear
force, in the same sense that a photon is the carrier for the
electromagnetic force, but with the key difference that the W- particle
carries a charge. That W- particle is aborbed by an up quark,
converting it into a down quark, with the result that the proton is
converted into a neutron. That same diagram, with a different time
ordering, can also be described as follows: An up quark converts into a
down quark, giving off a W+ particle. That particle is absorbed by an
electron, converting it into a neutrino.

Similar comments apply to the reverse reaction, whereby a neutron
decays into a proton and an electron; what is missing from the
description is the fact that the decay also produces an anti-neutrino.
The dominant diagram for that decay involves a down quark converting
into an up quark, giving off a W- particle. The W- particle decays into
an electron and an anti-neutrino.

Nov 1 '06 #25

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
by: Bryan Parkoff | last post by:
I know how to write "Pointer to Function" inside struct or class without using static, but I have decided to add static to all functions inside struct or class because I want member functions to be...
5
by: Uday Joshi | last post by:
Hi look at the code below /* test.c */ int main(int argc, char *argv) { int *x; *x = 10; printf("%d\n", *x); return 0;
7
by: Michael Birkmose | last post by:
Hi everyone!, Are pointers to incomplete types allowed in ANSI C? I can see that pointer arithmic on pointers to incomple types is impossible, however there are situations where it can be...
4
by: Il Prof | last post by:
Hi to everyone! ;) In C language on Linux, what string access method is faster? 1) Puntatori char str="hello"; char* pstr; pstr = str; // access such as "*pstr"
14
by: blue | last post by:
Hi, all: Recently I found this comment on comp.lang.c "Answers to FAQ" (6.13): If you really need to declare a pointer to an entire array, use something like "int (*ap);" where N is the size of...
27
by: Erik de Castro Lopo | last post by:
Hi all, The GNU C compiler allows a void pointer to be incremented and the behaviour is equivalent to incrementing a char pointer. Is this legal C99 or is this a GNU C extention? Thanks in...
26
by: MLH | last post by:
How would I modify the following to achieve a 2-dimensional array? Dim MyWeek, MyDay MyWeek = Array("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun") ' Return values assume lower bound set to 1...
4
by: Bernd Gaertner | last post by:
Dear experts, according to my interpretation of the Standard, loop 1 in the following program is legal, while loop 2 is not (see explanation below). This looks a bit counterintuitive, though; do...
4
by: pc_whocares | last post by:
My forehead is flat from pounding. I am building a DLL in VS2005 C++ for use in another software development platform. I am required to pass my array data in/out of the function via a...
0
by: DolphinDB | last post by:
Tired of spending countless mintues downsampling your data? Look no further! In this article, you’ll learn how to efficiently downsample 6.48 billion high-frequency records to 61 million...
1
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, we are pleased to welcome back...
0
by: Vimpel783 | last post by:
Hello! Guys, I found this code on the Internet, but I need to modify it a little. It works well, the problem is this: Data is sent from only one cell, in this case B5, but it is necessary that data...
0
by: jfyes | last post by:
As a hardware engineer, after seeing that CEIWEI recently released a new tool for Modbus RTU Over TCP/UDP filtering and monitoring, I actively went to its official website to take a look. It turned...
1
by: CloudSolutions | last post by:
Introduction: For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
1
by: Shællîpôpï 09 | last post by:
If u are using a keypad phone, how do u turn on JavaScript, to access features like WhatsApp, Facebook, Instagram....
0
by: af34tf | last post by:
Hi Guys, I have a domain whose name is BytesLimited.com, and I want to sell it. Does anyone know about platforms that allow me to list my domain in auction for free. Thank you
0
by: Faith0G | last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome former...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.