What I meant is: Does putchar(c) == EOF have two layers?
First, [COLOR=#170072][FONT=monospace]putchar(c), which will print 'c' out;
Second, evaluate putchar(c) == EOF, which is false because first step is successful.
To get the return value of a function, the function must first be executed, yes.
Quote:
How does 'e' get printed twice in 'Test'? I need each step through the code.
Now, if putchar actually DID return eof, it'd ignore the other half. It doesn't need to bother, since true || anything means true. That's why they call || short-circuit evaluation, it can quit early.
I think I can get the logic part, but not the 'ee' from Test to Teest'.
I re-wrote the code to avoid any possible confusion just simply printing each char twice:
but the code actually print each char FOUR times!
Apparently every last two repeats are from the explicit printing. Where are the first two repeats from?
Sorry for my slow catch!
You have a big array of pointers which determines which function gets called. It executes different code because a few pointers point to a different location in memory.
The value of table['a'], or any other vowel, is 0x400656. That's a location in memory which gets jumped to, containing the instructions for the putcharTwice function. All other indexes contain 0x400500, which is just putchar.
Thanks Don and corona688!
I think my problem is my mis-understanding of the function putchar(c) so that I re-wrote it with putc() which helped me understand it.
Thanks a lot again!
I am passing a char* to the function "reverse" and when I execute it with gdb I get:
Program received signal SIGSEGV, Segmentation fault.
0x000000000040083b in reverse (s=0x400b2b "hello") at pointersExample.c:72
72 *q = *p;
Attached is the source code.
I do not understand why... (9 Replies)
I'm trying to write a programme which scans strings to find how many vowels they contain. I get an error saying that I'm trying to compare a pointer and an integer inif(*v == scanme){. How can I overcome this ? Also, the programme seems to scan only the first word of a string e.g.: if I type "abc... (1 Reply)
Hi,
In the below C code,
#include <stdio.h>
void print() {
printf("Hello\n");
}
int main() {
void (*f)() = (void (*)()) print;
f();
(*f)();
}
I wonder, how the syntaxes "f()" and "(*f)()" are treated as same without any error? Is this an improvement or ANSI/ISO... (1 Reply)
if i create an array of pointers to a structure "struct node" as:
struct node *r;
and create "n" number of "linked lists" and assign it to the various struct pointers r using some function with a return type as structure pointer as:
r=multiplty(.......) /*some parameters*/
is... (2 Replies)
How can I print the memory address of a pointer using printf (or any other STDOUT functions?). I see in Linux its %p but not in unix, help?
thanks (5 Replies)
Hi.
Problem: I have to parse the payload of a packet. The payload could be in Big Endian Format (network byte order) or little. That depends on a flag present in the header of the packet.
Solution: A horrible solution could be to check for that flag everytime I have to read a field in the... (11 Replies)
Hello all
im trying to build function that will return void function pointer
what is mean is ( not working )
the main function
void * myClass::getFunction(int type){
if(type==1)
return &myClass::Test1;
if(type==2)
return &myClass::Test2;
}
void myClass::Test1(){... (1 Reply)
Dear All,
Here I want to know why we put =0 in case of pure virtual function, why not =1, =2 or any thing else
Please send me answer any one as soon as possible. (1 Reply)
i have a function:
char *pcCityIdToCountryName(ADMIN_DB_DATA *pstHEader, unit uiCityID)
this returns a pointer to CountryName if cityId is given.
to retrieve countryname i give:
char *CountryName;
CountryName = pcCityIdToCountryName(..................);
but when i compile it is giving :... (5 Replies)