Suggestions
Use up and down arrows to review and enter to select.Please wait while we process your payment
If you don't see it, please check your spam folder. Sometimes it can end up there.
If you don't see it, please check your spam folder. Sometimes it can end up there.
Please wait while we process your payment
By signing up you agree to our terms and privacy policy.
Don’t have an account? Subscribe now
Create Your Account
Sign up for your FREE 7-day trial
Already have an account? Log in
Your Email
Choose Your Plan
Individual
Group Discount
Save over 50% with a SparkNotes PLUS Annual Plan!
Purchasing SparkNotes PLUS for a group?
Get Annual Plans at a discount when you buy 2 or more!
Price
$24.99 $18.74 /subscription + tax
Subtotal $37.48 + tax
Save 25% on 2-49 accounts
Save 30% on 50-99 accounts
Want 100 or more? Contact us for a customized plan.
Your Plan
Payment Details
Payment Summary
SparkNotes Plus
You'll be billed after your free trial ends.
7-Day Free Trial
Not Applicable
Renews May 1, 2024 April 24, 2024
Discounts (applied to next billing)
DUE NOW
US $0.00
SNPLUSROCKS20 | 20% Discount
This is not a valid promo code.
Discount Code (one code per order)
SparkNotes PLUS Annual Plan - Group Discount
Qty: 00
SparkNotes Plus subscription is $4.99/month or $24.99/year as selected above. The free trial period is the first 7 days of your subscription. TO CANCEL YOUR SUBSCRIPTION AND AVOID BEING CHARGED, YOU MUST CANCEL BEFORE THE END OF THE FREE TRIAL PERIOD. You may cancel your subscription on your Subscription and Billing page or contact Customer Support at custserv@bn.com. Your subscription will continue automatically once the free trial period is over. Free trial is available to new customers only.
Choose Your Plan
For the next 7 days, you'll have access to awesome PLUS stuff like AP English test prep, No Fear Shakespeare translations and audio, a note-taking tool, personalized dashboard, & much more!
You’ve successfully purchased a group discount. Your group members can use the joining link below to redeem their group membership. You'll also receive an email with the link.
Members will be prompted to log in or create an account to redeem their group membership.
Thanks for creating a SparkNotes account! Continue to start your free trial.
We're sorry, we could not create your account. SparkNotes PLUS is not available in your country. See what countries we’re in.
There was an error creating your account. Please check your payment details and try again.
Please wait while we process your payment
Your PLUS subscription has expired
Please wait while we process your payment
Please wait while we process your payment
Another possible way to do pointer arithmetic is to subtract one pointer from another. Again, let's go back to the example where we have the four integers in a row at addresses 0x4b14, 0x4b18, 0x4b1b, and 0x4b1f. Let's say we have four pointers, ptr1, ptr2, ptr3, and ptr4, each pointing at the addresses in order. With normal arithmetic, ptr4 - ptr1 would result in the number 12 meaning that there are twelve bytes between them. However, with pointer arithmetic the computer takes into account the size of the data type involved, in this case an int. As such, ptr4 - ptr1 actually results in the value 3, meaning that the two values are separated by 3 integers.
In the C/C++ language, pointers and arrays are closely related. As it turns out, an array is just a series of variables laid out in a sequence, one after the other. If you were to declare an array of four integers, you would end up with a situation very similar to the one described above.
As a starting example, let's declare a few variables:
Like any other integer, we can use the & operator to get the address of an element in the array. For example, to get the address of the first element in the array, we could do &arr[0] and to get the address of the last element in the array we could do &arr[3]. So let's say that we want ptr to point to the first element of the array:
So, if pointer points to the beginning of the array, as it does after executing the instruction ptr = &arr[0], then we now have two ways to access each element of the array. The first way is the one you already know, accessing the element in an array at position n, by writing arr[n]. The second method takes advantage of pointer arithmetic. We use pointer arithmetic to move us to the nth place in the array, and then dereference it to get the integer at that index. This means that arr[n] and *(ptr + n) are synonymous.
We can take this one step further. As mentioned earlier, arrays are basically pointers. In fact, the variable arr is itself a pointer (a constant one, meaning we can't change the address it points to, but nonetheless it points to something). As arr is itself a pointer, we can do pointer arithmetic on it like any other pointer, so we could access the nth element of arr using *(arr + n). This is exactly the same as doing arr[n], and the process of adding the value n to the pointer arr and then dereferencing it is most likely what is taking place behind the scenes in the computer when you use arrays.
Please wait while we process your payment