Thanks Corona688!
I fully understand the full array is actually a big 1-dimension array from your previous reply.
I tried:
first 4 printf() print addresses in fact, and I seem understand that:
Because a[1] is the first address of a two-way (3x2) array, so a[1] is the same as a[1][0], which in turn is the first address of two-elements array, so that (now value, not address) a[1][0][0] = g; a[1][0][1] = h.
a[1] is not the first address of the 2-d array...it is the name of the 2-d array of rank 3x2...and since the name of an array is a synonym for the location of its initial element hence it contains the address of the second 2-d array of rank 3x2.
a[0] is this array -> {{'a', 'b'}, {'c', 'd'}, {'e', 'f'}} a[1] is this array -> {{'g', 'h'}, {'i', 'j'}, {'k', 'l'}}
Quote:
Originally Posted by yifangt
Thanks Corona688! My confusion is: How is the connection with the pointer (*pa)[2]? Here the [2] is the last dimension of the array a[4][3][2]. I treat each "2-element array" as a box---a single unit. so that (*pa)[2] points a[4][3], each unit is an address of an array. Right?
Yes your understanding is correct...
Quote:
Originally Posted by yifangt
I thought pa[4][3] should point to an address of the array{'q', 'r'}, but it actually points to the element, char "r". I lost the connection here (*pa)[2] vs. pa[4][3].
I'd suggest that you do those pointer arithmetic calculation using a pencil and paper...
Since arrays are laid out sequentially...char 'r' is the 3rd element of the array "pa[4]" hence pa[4][3] == 'r'
Quote:
Originally Posted by yifangt
Another confusion is the declaration of (*pa)[2] = &a[1][0] and (*ppa)[3][2] = &a[1]. The author is to emphasize the address of array and pointer. By array address only one anwer for char "r" which is a[2][2][1]. With pointer, you can have many ways(!?) What is the trick to connect two of them, say, if I declare (*pa)[2] = &a[2][0]?
If (*pa)[2] = &a[2][0] then you can get to the letter 'r' by...pa[0][5] or pa[2][1] or pa[1][3] or pa[3][-1]
Hope this helps...or have I confused you even more
For learning C I'd suggest sticking to "The C Programming Language" and "Expert C Programming"...those IMO are the 2 best books on the subject
hi all,
let say i have a pointer exit, and this exit will store some value. how can i store the value that the pointer points to into an array and then print them out from the array.
thanks in advance (2 Replies)
Hi I mash with pointers in C. I solve this problem about 5 hours and I don't know how I should continue.
void InsertFirst (tList *L, int val) {
tElemPtr new;
if((new = malloc(sizeof(tElemPtr))) == NULL) Error();
new->data = val;
new->ptr = L->frst;
L->frst = new;... (2 Replies)
Hi all. I am trying to use restricted pointers to allow the gcc compiler optimize the code, but I have not been able to make it work so far. I am testing with this code:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <sys/time.h>
void vecmult(int n, int * restrict a, int... (0 Replies)
I am new to shared pointer conceot in C++ and hence require some clarification:
For example:
class A
{
public:
virtual ~A()
{
}
int x;
};
typedef boost::shared_ptr<A>... (1 Reply)
I have a special character called ô. When it is declared as a character variable its showing it can be printed. But when it is declared as a character pointer variable its showing it cannot be printed. I am just wondering why its happening like this..
c1 = '@';
c2 = 'ô';
char *fp;
fp="XXô";
if... (1 Reply)
Hi All,
I am using the array of pointers and storing the address of string.This is a global list.
So i am using extern to give the reference of this list to another file and using reading the data from this string.
But list is being corrupted and string is missing some characters in... (2 Replies)
Please find the below program. the requirement and description of the program also given:
ganesh@ubuntu:~/my_programs/c/letusc/chap9$ cat fa.c.old
/* Program : write a program to count the number of 'e' in thefollowing array of pointers to strings:
char *s = {
"We will teach you how... (12 Replies)
I am attempting to create an array of function pointers. The examples I follow to do this are from:
support.microsoft.com/en-us/help/30580/how-to-declare-an-array-of-pointers-to-functions-in-visual-c
... (3 Replies)