C++ :: Finding Memory Address For Characters
Sep 9, 2013
I've recently been reading tutorials on arrays and their aquaintance with memory addresses. So, I completely understand how an array's name, when defined, is a constant pointer to its first element's address.
My problem, however, lies with characters, and how they are basically arrays except with a null terminator for the last index. What I've come to undestand, is that, when defining a character variable, each 'character' has a memory address it is associated with.
For example:
char name[] = {"Hello"}; // | 'H' | 'e' | 'l' | 'l' | 'o' | '/0' |
An address holds the value of 'H'.
An address holds the value of 'e'.
An address holds the value of 'l' and so on.
I have come to believe this is false, however. Mainly from a simple std::cout command.
std::cout << &name << std::endl; // attempt 1
std::cout << &name[0] << std::endl; // attempt 2
The first attempt, as I assumed, should print the address of the first element.
The second attempt, as I assumed, did not. I figured, &names[0] would print the address of the first element, which should have been the same as &names.
So, this brings me to my question, are characters formed of constant addresses, or are the address of individual characters not reachable?
View 9 Replies
ADVERTISEMENT
Aug 14, 2013
So I obviously can't take the address of a bitfield, but is there a way to get the address of the field holding the bitfield? What I'm trying to do is find the address of the parent field of a bitfield in a class. For example
Code:
class Foo
{
public:
int a;
int b : 4;
int c : 28;
[Code] ....
My goal is to get the offset address of the int storing c in class Foo. But offsetof uses the address of c, so I get a compile error since c is a bitfield. What I wanted as output from the above would be "4", since an int is 4 bytes (on my system). So the int holding both b & c starts 4 bytes from the start of the Foo class. Is there any way to do this in c/c++?
View 14 Replies
View Related
Jul 21, 2013
I'm currently working with linear VRAM (a buffer with 256KB memory, divided into four 64k planes, so plane 0 at 0x00000, plane 1 at 0x10000, plane 2 at 0x20000, plane 3 at 0x30000). Just add the index of the plane to that for the full address in VRAM.
I'm still wondering how to get a specific pixel from VRAM (x,y coordinate) when doing graphic modes (none color modes work, only the black/white pixels (1-bit) graphic mode works).
how I can get specific pixels from the VGA VRAM (having linear access described above) using Shift Register Interleave mode (VGA modes 4&5), 16-bit planar mode (Most VGA modes) etc.
View 4 Replies
View Related
Nov 20, 2012
I have written a C program without variable. And I want to print the value at that memory location.How to print that value?
code is like:-
int main()
{
printf("Enter value:");
scanf("%d",1245024);
/* how to print the value here */
return 0;
}
View 8 Replies
View Related
Jan 14, 2014
I am working on something that requires the memory address of my computers workload.. collect the trace files? and what trace file as well..
View 2 Replies
View Related
Sep 30, 2013
Pointers point to an address in memory. What if I used 3 pointers: 2 to mark the first/last nodes, and the third to mark the current node being referenced? I would wrap it in a class (to make the memory management automatic, of course), but is this practical?? maybe some pseudo code will get the juices flowing:
template<class type>
class supercondensed_list{
public:
supercondensed_list();
~supercondensed_list();
[code].....
Any things I should take into consideration? I'm not exactly the most experienced with pointers, and manually managing memory, but I think it's worth trying. If this works, then my programs should, in theory, be 100% memory efficient.
View 7 Replies
View Related
Apr 29, 2013
What I'm trying to do is:
int *p;
someType memoryLocation;
cout<<"Enter your memory location: ";
cin >> memoryLocation;
p = memoryLocation;
cout << *p;
I was just messing around with some code, and was curious to if this was possible.
View 6 Replies
View Related
Jun 30, 2014
The results of my code is supposed to be very simple: return the 2 integers and then their sum. However, it's doing returning the first value, then an address in memory(rather than the 2nd value), and then the 2nd value(rather than the sum). Here is the code:
#include <stdio.h>
#include <stdlib.h>
struct calculator{
double num1;
double num2;
double result;
[Code] .....
View 4 Replies
View Related
Sep 12, 2013
I made a text file. I can do all File I/O functions in c. no problem! except that "I want to get the memory address of the beginning of that File", so that I can access each character of the file by incrementing memory address.
View 1 Replies
View Related
Jun 3, 2013
I have an integer pointer and i want its address without allocating memory,
main() {
int *a;
cout<<a;
}
This is giving 00000000 and its but obvious. Now if i use address of a (&a) along with *a,
main() {
int *a;
cout<<a;
cout<<&a;
}
'cout<<a' gives me a constant address but 'cout<<&a' gives me different address.
what is the reason behind & and why behaviour of 'cout<<a' changes when using with &.
View 8 Replies
View Related
Jan 2, 2013
A special hardware unit with some storage in it is connected to your computer and is memory-mapped so that its storage is accessible in the address range 0x55500000 – 0x555fffff. You want to interface this hardware unit to your C++ program so that dynamic memory is allocated in this hardware unit, not in your computer’s memory. Implement a class MyHardwareMemAllocator which has the following function.
void * allocMemoryInMyHardware(int numberOfBytesToAllocate);
which returns a pointer to the allocated memory chunk, or null if unable to allocate.
C library calls like malloc are not allowed.
1) How to allocate memory from given address range.
2) How to check whether this required memory space is available or not for allocating
View 4 Replies
View Related
Jun 22, 2013
Suppose I have two classes, MyClassX and MyClassY, each with two member variables, as defined below. I create an object instance of each class, and then create a pointer to each member variable for each object:
Code:
class MyClassX
{
public:
int a;
double b;
MyClassX(int _a, double _b)
[code]....
After converting the hexadecimal to decimal, it appears that with MyClassX, pxb is 8 bytes from pxa, whereas for MyClassY, pya is only 4 bytes from pyb. This makes sense for MyClassY, because the first member variable to be stored is an int, and so will occupy 4 bytes. However, why should this be any different for MyClassX, which also has an int as the first member variable, so shouldn't this also occupy 4bytes?
The reason I have come across this problem is that I am looking into streaming objects to memory and then loading them again. (I know boost can do this, but I am trying it out myself from scratch.) Therefore, this is causing an issue, because I cannot just assume that the size of memory occupied by an object is just the sum of the sizes of its member variables. MyClassX is 8 bytes larger than MyClassY, even though the intuition is that it should only occupy 4 bytes more due to a double being replaced by an int.
View 4 Replies
View Related
Jul 8, 2014
When declaring char array[10], memory is allocated for 10 1-bit memory locations. Is extra memory allocated for storing the address of array[0]? In expressions, is array equivalent to a pointer constant or is it an identifier for a memory cell containing the address of array[0]? In other words, is array a variable or an alias for &array[0]?
View 6 Replies
View Related
Feb 3, 2014
I am looking for a way to correctly count the lines between two specified characters/strings in a file. Here's the part I need work on:
getline( file, lines );
do {
if(lines.find("character")
{
++counter;
}
} while( !lines.find("story") );
I want the code to search for the first occurence of the word "character," and start counting the lines from that line until it hit the first occurrence of the word "story."
Right now, I am only getting a counter value of 1.
View 2 Replies
View Related
Mar 28, 2013
bool isUnique(string _str)
{
bool char_set[256];
int len = _str.length();
memset(char_set, '/0', 256);
for(int i = 0; i < len; ++i)
[Code] .....
I came across this code to find if string has unique characters...i didnt understand why they subracted ascii value of character '0' in the statement int val = _str[i]- '0' and what is happening with the statements...
if(char_set[val])
{
return false;
}
char_set[val] = true;
I take each character in the sting and traverse the whole string .and if count is 2 i use break and conclude that its not unique and not otherwise...can i use this method or this is not efficient????
View 8 Replies
View Related
Jul 26, 2012
Try to implement overloading << operator. If I done it void then everything work fine (see comment out) if I make it class of ostream& then the operator return to me some memory address.
Code:
#ifndef Point_HPP // anti multiply including gates
#define Point_HPP
#include <sstream>
class Point {
private:// declaration of private data members
double x;// X coordinate
double y;// Y coordinate
[Code] .....
View 7 Replies
View Related
Jan 27, 2015
I have been working on a project that deals with an array of characters and finding there frequencies. I was able to determine the frequencies that where greater than 1, but I need to find the HIGHEST frequency.
Here is my full code:
#include <iostream>
using namespace std;
void input(char unlisted[80], int& n);
void bubblesort(char unlisted[80], char sortedlist[80], int n);
[Code].....
As you can see this will print out all frequencies that are bigger than 1, but I only want the highest frequency. Basically I want to print out all frequencies when count is greater than 1 less than count, but because its in a loop count will always be greater than count-1 so it prints out all frequencies.
View 3 Replies
View Related
Feb 5, 2014
I need to find a string(&login=) from physical memory dump file.And i have to print the word or string following it.Is there any C# code for this problem?
View 3 Replies
View Related
Mar 20, 2014
so my question is i want to print characters,no string just an array of characters,i do this but it s not working,maybe i have to put the '' at the end?
Code:
int main() {
int i;
char ch[5];
for(i = 0; i < 5; i++) {
scanf("%c",&ch[i]);
[Code]...
View 6 Replies
View Related
Jul 6, 2014
Im supposed to find the common characters between two string characters, assuming that the user wont input duplicate letters like ddog. When I run my code I get an output of a question mark upside down. Here is my code with comments on what each part is supposed to do
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
char str1[20], str2[20],remp = '