Search Results

Search found 3255 results on 131 pages for 'pointers'.

Page 28/131 | < Previous Page | 24 25 26 27 28 29 30 31 32 33 34 35  | Next Page >

  • why no implicit conversion from pointer to reference to const pointer.

    - by user316606
    I'll illustrate my question with code: #include <iostream> void PrintInt(const unsigned char*& ptr) { int data = 0; ::memcpy(&data, ptr, sizeof(data)); // advance the pointer reference. ptr += sizeof(data); std::cout << std::hex << data << " " << std::endl; } int main(int, char**) { unsigned char buffer[] = { 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, }; /* const */ unsigned char* ptr = buffer; PrintInt(ptr); // error C2664: ... PrintInt(ptr); // error C2664: ... return 0; } When I run this code (in VS2008) I get this: error C2664: 'PrintInt' : cannot convert parameter 1 from 'unsigned char *' to 'const unsigned char *&'. If I uncomment the "const" comment it works fine. However shouldn't pointer implicitly convert into const pointer and then reference be taken? Am I wrong in expecting this to work? Thanks!

    Read the article

  • Acessing a struct member, using a pointer to a vector of structs. Error:base operand of '->' has non-pointer type

    - by Matt Munson
    #include <iostream> #include <vector> using namespace std; struct s_Astruct { vector <int> z; }; int main () { vector <s_Astruct> v_a; for(int q=0;q<10;q++) { v_a.push_back(s_Astruct()); for(int w =0;w<5;w++) v_a[q].z.push_back(8); } vector <s_Astruct> * p_v_a = & v_a; cout << p_v_a[0]->z[4]; //error: base operand of '->' has non-pointer type //'__gnu_debug_def::vector<s_Astruct, std::allocator<s_Astruct> >' } There seems to be some issue with this sort of operation that I don't understand. In the code that I'm working on I actually have things like p_class-vector[]-vector[]-int; and I'm getting a similar error.

    Read the article

  • How do I return the indices of a multidimensional array element in C?

    - by Eddy
    Say I have a 2D array of random boolean ones and zeroes called 'lattice', and I have a 1D array called 'list' which lists the addresses of all the zeroes in the 2D array. This is how the arrays are defined: define n 100 bool lattice[n][n]; bool *list[n*n]; After filling the lattice with ones and zeroes, I store the addresses of the zeroes in list: for(j = 0; j < n; j++) { for(i = 0; i < n; i++) { if(!lattice[i][j]) // if element = 0 { list[site_num] = &lattice[i][j]; // store address of zero site_num++; } } } How do I extract the x,y coordinates of each zero in the array? In other words, is there a way to return the indices of an array element through referring to its address?

    Read the article

  • Is there a way to have a bit bucket pointer? (C/C++)

    - by Crazy Chenz
    Is there a way to have a bit bucket pointer? A lot of IO (specifically input related) system calls return data to a buffer of a specific size. Is there a trick or way to make a sorta bit bucket pointer, so I can accept any amount of data that will be thrown away. Doing something like "char tmp[INT_MAX]" is crazy. The behavior I am looking for is something like /dev/null, only in a pointer world. Not to hopeful on this.... just curious. Thanks, Chenz UPDATE: Perhaps mmap-ing /dev/null. Forgot about that when I asked the question.

    Read the article

  • C problem, left of '->' must point to class/struct/union/generic type ??

    - by Patrick
    Hello! Trying to understand why this doesn't work. I keep getting the following errors: left of '-nextNode' must point to class/struct/union/generic type (Also all the lines with a - in the function new_math_struct) Header file #ifndef MSTRUCT_H #define MSTRUCT_H #define PLUS 0 #define MINUS 1 #define DIVIDE 2 #define MULTIPLY 3 #define NUMBER 4 typedef struct math_struct { int type_of_value; int value; int sum; int is_used; struct math_struct* nextNode; } ; typedef struct math_struct* math_struct_ptr; #endif C file int get_input(math_struct_ptr* startNode) { /* character, input by the user */ char input_ch; char* input_ptr; math_struct_ptr* ptr; math_struct_ptr* previousNode; input_ptr = &input_ch; previousNode = startNode; /* as long as input is not ok */ while (1) { input_ch = get_input_character(); if (input_ch == ',') // Carrage return return 1; else if (input_ch == '.') // Illegal character return 0; if (input_ch == '+') ptr = new_math_struct(PLUS, 0); else if (input_ch == '-') ptr = new_math_struct(MINUS, 0); else if (input_ch == '/') ptr = new_math_struct(DIVIDE, 0); else if (input_ch == '*') ptr = new_math_struct(MULTIPLY, 0); else ptr = new_math_struct(NUMBER, atoi(input_ptr)); if (startNode == NULL) { startNode = previousNode = ptr; } else { previousNode->nextNode = ptr; previousNode = ptr; } } return 0; } math_struct_ptr* new_math_struct(int symbol, int value) { math_struct_ptr* ptr; ptr = (math_struct_ptr*)malloc(sizeof(math_struct_ptr)); ptr->type_of_value = symbol; ptr->value = value; ptr->sum = 0; ptr->is_used = 0; return ptr; } char get_input_character() { /* character, input by the user */ char input_ch; /* get the character */ scanf("%c", &input_ch); if (input_ch == '+' || input_ch == '-' || input_ch == '*' || input_ch == '/' || input_ch == ')') return input_ch; // A special character else if (input_ch == '\n') return ','; // A carrage return else if (input_ch < '0' || input_ch > '9') return '.'; // Not a number else return input_ch; // Number } The header for the C file just contains a reference to the struct header and the definitions of the functions. Language C.

    Read the article

  • Pointer mysteriously moves

    - by Armen Ablak
    Hi, I have this code for Node rotation and in a line which is marked something happens and I don't really know what and why :). //Test case 30 \ 16 / 29 RotationRight(node->mParent); //call template<class T> void SplayTree<T>::RotationRight(SplayNode<T> *&node) const { SplayNode<T> *left = node->mLeft; SplayNode<T> *parent = node->mParent; node->mLeft = left->mRight; if(left->HasRight()) left->mRight->mParent = node; left->mRight = node; //node in this line points to 0x00445198 {30} left->mParent = node->mParent; //and in this line it points to 0x00444fb8 {16} (node, not node->mParent) node->mParent = left; node = left; } Well, left-mParent points to node also, so I basically do node = node-mParent. The problem is I can't find a work around - how to unpin in from node and change it's pointing address without changing it's.

    Read the article

  • How to guard against memory leaks?

    - by just_wes
    I was recently interviewing for a C++ position, and I was asked how I guard against creating memory leaks. I know I didn't give a satisfactory answer to that question, so I'm throwing it to you guys. What are the best ways to guard against memory leaks? Thanks!

    Read the article

  • how do you set a property of a control to an address of a function in xaml?

    - by ambog36
    Hi, I have a control that has a "Filter" property that expects a function that defines how the contents of the control should be filtered. so far i am setting the filter in code behind as such: MyControl.Filter = AddressOf Filters.MyFilter In this example MyFilter is a shared function in the Filters class with the following signature: Public Shared Function MyFilter(ByVal obj As Object, ByVal text As String) As Boolean I would like to set this in xaml. I was thinking of setting the Filters.MyFilter as a static resource and setting it that way: ...Filter="{StaticResource myFilter}"/ but i cant set Filters.MyFilter as a static resource. Any ideas on how to achieve this? Thanks,

    Read the article

  • Linked List manipulation, issues retrieving data c++

    - by floatfil
    I'm trying to implement some functions to manipulate a linked list. The implementation is a template typename T and the class is 'List' which includes a 'head' pointer and also a struct: struct Node { // the node in a linked list T* data; // pointer to actual data, operations in T Node* next; // pointer to a Node }; Since it is a template, and 'T' can be any data, how do I go about checking the data of a list to see if it matches the data input into the function? The function is called 'retrieve' and takes two parameters, the data and a pointer: bool retrieve(T target, T*& ptr); // This is the prototype we need to use for the project "bool retrieve : similar to remove, but not removed from list. If there are duplicates in the list, the first one encountered is retrieved. Second parameter is unreliable if return value is false. E.g., " Employee target("duck", "donald"); success = company1.retrieve(target, oneEmployee); if (success) { cout << "Found in list: " << *oneEmployee << endl; } And the function is called like this: company4.retrieve(emp3, oneEmployee) So that when you cout *oneEmployee, you'll get the data of that pointer (in this case the data is of type Employee). (Also, this is assuming all data types have the apropriate overloaded operators) I hope this makes sense so far, but my issue is in comparing the data in the parameter and the data while going through the list. (The data types that we use all include overloads for equality operators, so oneData == twoData is valid) This is what I have so far: template <typename T> bool List<T>::retrieve(T target , T*& ptr) { List<T>::Node* dummyPtr = head; // point dummy pointer to what the list's head points to for(;;) { if (*dummyPtr->data == target) { // EDIT: it now compiles, but it breaks here and I get an Access Violation error. ptr = dummyPtr->data; // set the parameter pointer to the dummy pointer return true; // return true } else { dummyPtr = dummyPtr->next; // else, move to the next data node } } return false; } Here is the implementation for the Employee class: //-------------------------- constructor ----------------------------------- Employee::Employee(string last, string first, int id, int sal) { idNumber = (id >= 0 && id <= MAXID? id : -1); salary = (sal >= 0 ? sal : -1); lastName = last; firstName = first; } //-------------------------- destructor ------------------------------------ // Needed so that memory for strings is properly deallocated Employee::~Employee() { } //---------------------- copy constructor ----------------------------------- Employee::Employee(const Employee& E) { lastName = E.lastName; firstName = E.firstName; idNumber = E.idNumber; salary = E.salary; } //-------------------------- operator= --------------------------------------- Employee& Employee::operator=(const Employee& E) { if (&E != this) { idNumber = E.idNumber; salary = E.salary; lastName = E.lastName; firstName = E.firstName; } return *this; } //----------------------------- setData ------------------------------------ // set data from file bool Employee::setData(ifstream& inFile) { inFile >> lastName >> firstName >> idNumber >> salary; return idNumber >= 0 && idNumber <= MAXID && salary >= 0; } //------------------------------- < ---------------------------------------- // < defined by value of name bool Employee::operator<(const Employee& E) const { return lastName < E.lastName || (lastName == E.lastName && firstName < E.firstName); } //------------------------------- <= ---------------------------------------- // < defined by value of inamedNumber bool Employee::operator<=(const Employee& E) const { return *this < E || *this == E; } //------------------------------- > ---------------------------------------- // > defined by value of name bool Employee::operator>(const Employee& E) const { return lastName > E.lastName || (lastName == E.lastName && firstName > E.firstName); } //------------------------------- >= ---------------------------------------- // < defined by value of name bool Employee::operator>=(const Employee& E) const { return *this > E || *this == E; } //----------------- operator == (equality) ---------------- // if name of calling and passed object are equal, // return true, otherwise false // bool Employee::operator==(const Employee& E) const { return lastName == E.lastName && firstName == E.firstName; } //----------------- operator != (inequality) ---------------- // return opposite value of operator== bool Employee::operator!=(const Employee& E) const { return !(*this == E); } //------------------------------- << --------------------------------------- // display Employee object ostream& operator<<(ostream& output, const Employee& E) { output << setw(4) << E.idNumber << setw(7) << E.salary << " " << E.lastName << " " << E.firstName << endl; return output; } I will include a check for NULL pointer but I just want to get this working and will test it on a list that includes the data I am checking. Thanks to whoever can help and as usual, this is for a course so I don't expect or want the answer, but any tips as to what might be going wrong will help immensely!

    Read the article

  • Evaluation of (de)reference operators

    - by Micha
    I have an (uncommented...) source file which I'm trying to understand. static const Map *gCurMap; static std::vector<Map> mapVec; then auto e = mapVec.end(); auto i = mapVec.begin(); while(i!=e) { // ... const Map *map = gCurMap = &(*(i++)); // ... } I don't understand what &(*(i++)) does. It does not compile when just using i++, but to me it looks the same, because I'm "incrementing" i, then I'm requesting the value at the given address and then I'm requesting the address of this value?!

    Read the article

  • pointer&dynamic memory

    - by gcc
    how many methods are there taking input by using with pointer and dynamic memory input 3 1 2 n k l 2 1 2 p 4 55 62 * # x x is stop character and first input 3 is for another variable int hakko; only hakko use first input the others will be hold in one pointer and input size not determined

    Read the article

  • C++ finding pointer errors

    - by Tony
    Hello! I am currently on a project which has been buggy for a long while, now I suspect, among other things, that there is pointer errors in the code. The program is written in native C++ using COM and uses out-of-process COM servers. Can anybody give me some tips as how one would go about finding these errors? Is there specific things to keep in mind, ways to do it, etc...

    Read the article

  • assignment from incompatible pointer type

    - by Hristo
    I have set up the following struct: typedef struct _thread_node_t { pthread_t thread; struct thread_node_t *next; } thread_node_t; ... and then I have defined: // create thread to for incoming connection thread_node_t *thread_node = (thread_node_t*) malloc(sizeof(thread_node_t)); pthread_create(&(thread_node->thread), NULL, client_thread, &csFD); thread_node->next = thread_arr; // assignment from incompatible pointer type thread_arr = thread_node; where thread_arr is thread_node_t *thread_arr = NULL; I don't understand why the compiler is complaining. Maybe I'm misunderstanding something.

    Read the article

  • c Pointer to pointer, or passing list to functions

    - by user361808
    Hi, I am new to c programming. Could anyone please tell me what's wrong with the following program? typedef struct Person_s { int age; char name[40]; } Person_t; int process_list(int *countReturned, Person_t **p_list) { Person_t *rowPtr=0; //the actual program will fethc data from DB int count =1; if(!((*p_list) = (Person_t *) malloc(sizeof(Person_t)))) { return -1; } rowPtr = *p_list; rowPtr[count-1].age =19; strcpy(rowPtr[count-1].name,"Prince Dastan"); *countReturned = count; return 0; } int main(int argc, char *argv[]) { Person_t *tmpPerson=0; Person_t **p_list=0; int *count=0; int i; process_list(count,p_list); tmpPerson = *p_list; for(i=0; i< *count; i++) { printf("Name: %s , age: %d\n",tmpPerson->name,tmpPerson->age); tmpPerson++; } //free(tmpPerson); return 0; }

    Read the article

  • Is apparent NULL pointer dereference in C actually pointer arithmetic?

    - by karthik A
    hey ive got this piece of code. It dereferences a null pointer here. But then there is an and with unsigned int. I really dont understand the whole part. Can someone explain the output.?? struct hi { long a; int b; long c; }; int main() { struct hi ob={3,4,5}; struct hi *ptr=&ob; int num= (unsigned int) & (((struct hi *)0)->b); printf("%d",num); printf("%d",*(int *)((char *)ptr + (unsigned int) & (((struct hi *)0)->b))); } The output I get is 44. But how does it work?

    Read the article

  • segmentation fault when using pointer to pointer

    - by user3697730
    I had been trying to use a pointer to pointer in a function,but is seems that I am not doing the memory allocation correctly... My code is: #include<stdio.h> #include<math.h> #include<ctype.h> #include<stdlib.h> #include<string.h> struct list{ int data; struct list *next; }; void abc (struct list **l,struct list **l2) { *l2=NULL; l2=(struct list**)malloc( sizeof(struct list*)); (*l)->data=12; printf("%d",(*l)->data); (*l2)->next=*l2; } int main() { struct list *l,*l2; abc(&l,&l2); system("pause"); return(0); } This code compiles,but I cannot run thw program..I get a segmentation fault..What should I do?Any help would be appreciated!

    Read the article

  • Can somebody please explain this recursive function for me?

    - by capncoolio
    #include <stdio.h> #include <stdlib.h> void reprint(char *a[]) { if(*a) { printf("%d ",a); reprint(a+1); printf("%s ",*a); } } int main() { char *coll[] = {"C", "Objective", "like", "don't", "I", NULL}; reprint(coll); printf("\n"); return EXIT_SUCCESS; } As the more experienced will know, this prints the array in reverse. I don't quite understand how! I need help understanding what reprint(char *a[]) does. I understand pointer arithmetic to a degree, but from inserting printf's here and there, I've determined that the function increments up to the array end, and then back down to the start, only printing on the way down. However, I do not understand how it does this; all I've managed to understand by looking at the actual code is that if *a isn't NULL, then call reprint again, at the next index. Thanks guys!

    Read the article

  • using structures with multidimentional tables

    - by gem
    I have a table of structures and this structures are 2 dimentional table of constants. can you teach me on how to get the values in the table of constants. (note following is just example) typedef struct { unsigned char ** Type1; unsigned char ** Type2; } Formula; typedef struct { Formula tformula[size]; } table; const table Values = { (unsigned char**) &(default_val1), (unsigned char**) &(default_val2) }; const unsigned char default_val1[4][4] = { {0,1,2,3}, {4,5,6,7}, {8,9,0,11}, {12,13,14,15} } const unsigned char default_val2[4][4] = { {15,16,17,13}, {14,15,16,17}, {18,19,10,21}, {22,23,24,25} }

    Read the article

  • How can Java assignment be made to point to an object instead of making a copy?

    - by Matthew Piziak
    In a class, I have: private Foo bar; public Constructor(Foo bar) { this.bar = bar; } Instead of creating a copy of bar from the object provided in the parameter, is it possible to include a pointer to bar in the constructor such that changing the original bar changes the field in this object? Another way of putting it: int x = 7; int y = x; x = 9; System.out.print(y); //Prints 7. It is possible to set it up so that printing y prints 9 instead of 7?

    Read the article

  • Set argument pointer to point to new memory inside a function (without returning it) IN C

    - by user321605
    Hello, Hopefully my title was descriptive enough to attract the right help. I want to write a function that will return 1 thing, and modify a provided pointer in another. My current function declaration is . . . char * afterURL replaceURLS(char * body) What I want to do is copy all of body's data into a new string, and set body to point to this new data. I then want afterURL to point to a location within the new string. My issue is getting the actual pointer that is passed in to this function to point to the new data. Thanks in advance! Rob

    Read the article

  • Assigning a pointer variable to a const int in C++?

    - by John
    I'm wondering if anyone can explain the following to me: If I write int i = 0; float* pf = i; I get a compile error (gcc 4.2.1): error: invalid conversion from ‘int’ to ‘float*’ Makes sense - they are obviously two completely different types. But if instead I write const int i = 0; float* pf = i; It compiles without error. Why should the 'const' make a difference on the right hand side of the assignment? Isn't part of the idea of the 'const' keyword to be able to enforce type constraints for constant values? Any explanation I have been able to come up with feels kind of bogus. And none of my explanations also explain the fact that const int i = 1; float* pf = i; fails to compile. Can anyone offer an explanation?

    Read the article

  • How to pass a member function to a function used in another member function?

    - by Tommaso Ferrari
    I found something about my problem, but I don't already understand very well. I need to do something like this: class T{ double a; public: double b; void setT(double par){ a=par; }; double funct(double par1) { return par1/a; } void exec(){ b=extfunct(funct, 10); } } double extfunct(double (*f)(double),double par2){ return f(par2)+5; } Operation and function are only for example, but the structure is that. The reason of this structure is that I have a precostituited class which finds the minimum of a gived function (it's extfunct in the example). So I have to use it on a function member of a class. I understood the difference between pointer to function and pointer to member function, but I don't understand how to write it. Thanks, and sorry for the poor explanation of the problem.

    Read the article

  • What does this pointer-heavy C code do?

    - by justRadojko
    Could someone explain to me what should two following lines do: s.httpheaderline[s.httpheaderlineptr] = *(char *)uip_appdata; ++((char *)uip_appdata); This is taken from uIP code for microcontrollers. s - structure httpheaderline - http packet presented as a string httpheadrlineptr - integer value uip_appdata - received ethernet packet (string) If some more info is needed please let me know. BTW. Eclipse is reporting an error on the second line with message Invalid lvalue in increment so i'm trying to figure out how to solve this.

    Read the article

< Previous Page | 24 25 26 27 28 29 30 31 32 33 34 35  | Next Page >