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 12, 2024 May 5, 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
We have seen that it is possible to initialize an array in its declaration. For example a one dimensional array would be declared as follows:
Now with a two dimensional array we would do something similar:
In a two-dimensional array all of the rows be the same number of columns wide. For this reason, you must include a size between each pair of brackets except the first, which is optional. If you look at the syntax, what we are actually doing is declaring a one dimensional array of one dimensional arrays.
Now we will cover why all of the columns need to be of the same width when we explain what actually happens when you index into an array. If it is a one dimensional array, the indexing step is simple. It can be thought of through pointer arithmetic. To get arr[2] you just dereference the pointer plus two: *(arr + 2). The process gets more complicated when dealing with multi-dimensional arrays because each of the dimensions will affect the pointer arithmetic differently. Specifically, the index in the row position should be multiplied by the column width. So arr2[2][1] is the same as *(arr + 2 * 3 + 1) which is the pointer plus the row number times the column width plus the column number. If the number of columns were not fixed it would be impossible to do this sort of pointer arithmetic to arrive at the correct cell. One way to think about this is that a two dimensional array looks the same as a one dimensional array in memory. It is just one chunk of memory. The column width is necessary to know how to fold this chunk of memory into rows.
Another significant implication of arrays really just being a pointer to a chunk of memory is that when you pass an array into a function, the function can modify it and have those modifications affect the array in the place that the function was called. In other words, there is not local copy of the entire array passed into a function. The reason for this is that only a pointer to the array gets passed in, which means that when you assign to the array you are affecting the same memory that the array from the calling function refers to. This feature can be very useful for processing large amounts of data in functions, but can also create some confusing bugs if you forget that only a pointer to an array gets passed to functions.
Please wait while we process your payment