PageSourceSearch

https://c-cpp.netlify.app/assets/js/ca1b2ff9.50999da2.js

js c-cpp.netlify.app collected 2026-10-03 10:33:29 UTC 11,448 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkc_cpp=self.webpackChunkc_cpp||[]).push([["8106"],{4942(r,e,n){n.r(e),n.d(e,{metadata:()=>t,default:()=>b,frontMatter:()=>u,contentTitle:()=>c,toc:()=>d,assets:()=>p});var t=JSON.parse('{"id":"arrays-pointers/array-basics","title":"Array basics","description":"","source":"@site/docs/arrays-pointers/array-basics.mdx","sourceDirName":"arrays-pointers","slug":"/arrays-pointers/array-basics","permalink":"/arrays-pointers/array-basics","draft":false,"unlisted":false,"editUrl":"https://github.com/pranabdas/c-cpp/blob/main/docs/arrays-pointers/array-basics.mdx","tags":[],"version":"current","frontMatter":{"title":"Array basics"},"sidebar":"docs","previous":{"title":"Array and Pointer","permalink":"/category/array-and-pointer"},"next":{"title":"Pointer basics","permalink":"/arrays-pointers/pointer-basics"}}'),a=n(4848),i=n(8453),o=n(773),s=n(7250),l=n(1113);let u={title:"Array basics"},c,p={},d=[];function f(r){return(0,a.jsxs)(o.A,{groupId:"language",children:[(0,a.jsx)(s.A,{value:"C",children:(0,a.jsx)(l.A,{language:"c",title:"src/c/arrays-pointers/01-array-basics.c",showLineNumbers:!0,children:'#include <stdio.h>\n\nint main()\n{\n    const int SIZE = 5;\n\n    // int array1[SIZE] = {0}; // if the array size is not knowns compile time,\n                            // use heap dynamic memory\n    // int array2[SIZE] = {1, 2, 3, 4, 5};\n    // some compiler might complain here, use 5 instead of SIZE\n    // fails in gcc, however works in apple clang\n    int array1[5] = {0};\n    int array2[5] = {1, 2, 3, 4, 5};\n    int array3[] = {1, 2, 3, 4, 5};\n\n    char str1[] = "hello";\n\n    int i;\n    double sum2 = 0, sum3 = 0;\n    double *ptr_sum2 = &sum2;\n\n    for (i = 0; i < SIZE; i++)\n    {\n        sum2 += array2[i];\n        sum3 += array3[i];\n    }\n\n    printf("Sum2 = %f\\n", sum2);\n    printf("Sum3 = %f\\n", sum3);\n\n    printf("Pointer sum2: %p\\n", ptr_sum2);\n    printf("Sum2 = %f\\n", *ptr_sum2);\n\n    printf("array2 position: %p\\n", array2);\n\n    return 0;\n}\n'})}),(0,a.jsx)(s.A,{value:"C++",children:(0,a.jsx)(l.A,{language:"cpp",title:"src/cpp/arrays-pointers/01-array-basics.cpp",showLineNumbers:!0,children:'#include <iostream>\nusing namespace std;\n\nvoid print_2d_array(float *, int, int);\n\nint main()\n{\n    int arr[] = {2, 4, 8, 15};\n    // arr[4] = {1, 2};\n    // above assignment sets: arr[0] = 1, arr[1] = 2, arr[2] = 0, arr[3] = 0\n    // aggregation initialization:\n    // note that if we do not provide any value via curly braces, the array\n    // remains uninitialized. To make sure array is initialized to zeros:\n    // arr[4] = {}\n\n    for (int i : arr)\n    {\n        cout << i << endl;\n    }\n\n    const int SIZE = 10; // `const` is necessary here\n    double data[SIZE];\n    // if the size of array is not known compile time, use heap dynamic array\n\n    cout << "Size of data = " << sizeof(data) << " bytes\\n";\n    cout << "Length of data array: " << sizeof(data) / sizeof(data[0]) << endl;\n    // the above prints the size of the entire array\n\n    // multi-dimensional array:\n    float arr2d[3][4] = {0.0}; // this initializes all elements to with 0.0\n    cout << "\\narr2d:\\n";\n    print_2d_array(&arr2d[0][0], 3, 4);\n\n    float arr2d2[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};\n    cout << "\\narr2d2:\\n";\n    print_2d_array(&arr2d2[0][0], 3, 4);\n\n    float arr2d3[3][4] = {{1.1, 2.2, 3.3, 4.4},\n                          {5.5, 6.6, 7.7, 8.8},\n                          {9.9, 10., 11., 12.}};\n    cout << "\\narr2d3:\\n";\n    print_2d_array(&arr2d3[0][0], 3, 4);\n\n    float arr2d4[][4] = {{1.1, 2.2, 3.3, 4.4},\n                          {5.5, 6.6, 7.7, 8.8},\n                          {9.9, 10., 11., 12.}};\n    cout << "\\narr2d4:\\n";\n    print_2d_array(&arr2d4[0][0], 3, 4);\n\n    float arr2d5[][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};\n    cout << "\\narr2d5:\\n";\n    print_2d_array(&arr2d5[0][0], 3, 4);\n\n    float arr2d6[3][4] = {0.3}; // sets first element to 0.3, rest to 0.0\n    cout << "\\narr2d6:\\n";\n    print_2d_array(&arr2d6[0][0], 3, 4);\n\n    return 0;\n}\n\nvoid print_2d_array(float *arr, int m, int n)\n{\n    for (int i = 0; i < m; i++)\n    {\n        for (int j = 0; j < n; j++)\n        {\n            // array elements are continuously stored row by row in C++\n            cout << *(arr + (n * i) + j) << "\\t";\n            //      |   --- pointer to the first element, do the pointer\n            //      |       arithmetic to get the next elements\n            //      dereference the value\n        }\n        cout << endl;\n    }\n}\n'})})]})}function b(r={}){let{wrapper:e}={...(0,i.R)(),...r.components};return e?(0,a.jsx)(e,{...r,children:(0,a.jsx)(f,{...r})}):f(r)}},7250(r,e,n){n.d(e,{A:()=>s});var t=n(4848);n(6540);var a=n(4164),i=n(7663);function o(r){let{children:e,className:n,hidden:i}=r;return(0,t.jsx)("div",{role:"tabpanel",className:(0,a.A)("tabItem_Ymn6",n),hidden:i,children:e})}function s(r){let{children:e,className:n,value:a}=r,{selectedValue:s,lazy:l}=(0,i.uc)(),u=a===s;return!u&&l?null:(0,t.jsx)(o,{className:n,hidden:!u,children:e})}},773(r,e,n){n.d(e,{A:()=>d});var t=n(4848);n(6540);var a=n(4164),i=n(8287),o=n(7663),s=n(8584),l=n(9863);function u(r){let{className:e}=r,{selectedValue:n,selectValue:i,tabValues:l,block:u}=(0,o.uc)(),c=[],{blockElementScrollPositionUntilNextRender:p}=(0,s.a_)(),d=r=>{let e=r.currentTarget,t=l[c.indexOf(e)].value;t!==n&&(p(e),i(t))},f=r=>{var e,n;let t=null;switch(r.key){case"Enter":d(r);break;case"ArrowRight":{let n=c.indexOf(r.currentTarget)+1;t=null!=(e=c[n])?e:c[0];break}case"ArrowLeft":{let e=c.indexOf(r.currentTarget)-1;t=null!=(n=c[e])?n:c[c.length-1]}}null==t||t.focus()};return(0,t.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":u},e),children:l.map(r=>{var e,i;let{value:o,label:s,attributes:l}=r;return(0,t.jsx)("li",(e=function(r){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{},t=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(t=t.concat(Object.getOwnPropertySymbols(n).filter(function(r){return Object.getOwnPropertyDescriptor(n,r).enumerable}))),t.forEach(function(e){var t;t=n[e],e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t})}return r}({role:"tab",tabIndex:n===o?0:-1,"aria-selected":n===o,ref:r=>{c.push(r)},onKeyDown:f,onClick:d},l),i=i={className:(0,a.A)("tabs__item","tabItem_LNqP",null==l?void 0:l.className,{"tabs__item--active":n===o}),children:null!=s?s:o},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):(function(r){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e.push.apply(e,n)}return e}
1)(Object(i)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(i,r))}),e),o)})})}function c(r){let{children:e}=r;return(0,t.jsx)("div",{className:"margin-top--md",children:e})}function p(r){let{className:e,children:n}=r;return(0,t.jsxs)("div",{className:(0,a.A)(i.G.tabs.container,"tabs-container","tabList__CuJ"),children:[(0,t.jsx)(u,{className:e}),(0,t.jsx)(c,{children:n})]})}function d(r){let e=(0,l.A)(),n=(0,o.OC)(r);return(0,t.jsx)(o.O_,{value:n,children:(0,t.jsx)(p,{className:r.className,children:(0,o.vT)(r.children)})},String(e))}},7663(r,e,n){n.d(e,{OC:()=>d,O_:()=>y,uc:()=>b,vT:()=>c});var t=n(4848),a=n(6540),i=n(6347),o=n(9989),s=n(6629),l=n(618),u=n(1367);function c(r){return a.Children.toArray(r).filter(r=>"\n"!==r)}function p(r){let{value:e,tabValues:n}=r;return n.some(r=>r.value===e)}function d(r){var e,n;let t,{defaultValue:c,queryString:d=!1,groupId:f}=r,b=function(r){let{values:e,children:n}=r;return(0,a.useMemo)(()=>{let r=null!=e?e:a.Children.toArray(n).flatMap(r=>{if(!r)return[];if((0,a.isValidElement)(r)&&function(r){let{props:e}=r;return!!e&&"object"==typeof e&&"value"in e}(r))return[r];let e="string"==typeof r.type?r.type:r.type.name;throw Error("Docusaurus error: Bad <Tabs> child <".concat(e,'>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.\nIf you do not want to pass on a "value" prop to the direct children of <Tabs>, you can also pass an explicit <Tabs values={...}> prop.'))}).map(r=>{let{props:{value:e,label:n,attributes:t,default:a}}=r;return{value:e,label:n,attributes:t,default:a}}),t=(0,l.XI)(r,(r,e)=>r.value===e.value);if(t.length>0)throw Error('Docusaurus error: Duplicate values "'.concat(t.map(r=>"'".concat(r.value,"'")).join(", "),'" found in <Tabs>. Every value needs to be unique.'));return r},[e,n])}(r),[y,m]=(0,a.useState)(()=>(function(r){var e;let{defaultValue:n,tabValues:t}=r;if(0===t.length)throw Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(n){if(!p({value:n,tabValues:t}))throw Error('Docusaurus error: The <Tabs> has a defaultValue "'.concat(n,'" but none of its children has the corresponding value. Available values are: ').concat(t.map(r=>r.value).join(", "),". If you intend to show no default tab, use defaultValue={null} instead."));return n}let a=null!=(e=t.find(r=>r.default))?e:t[0];if(!a)throw Error("Unexpected error: 0 tabValues");return a.value})({defaultValue:c,tabValues:b})),[h,v]=function(r){let{queryString:e=!1,groupId:n}=r,t=(0,i.W6)(),o=function(r){let{queryString:e=!1,groupId:n}=r;if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return null!=n?n:null}({queryString:e,groupId:n});return[(0,s.aZ)(o),(0,a.useCallback)(r=>{var e,n;if(!o)return;let a=new URLSearchParams(t.location.search);a.set(o,r),t.replace((e=function(r){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{},t=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(t=t.concat(Object.getOwnPropertySymbols(n).filter(function(r){return Object.getOwnPropertyDescriptor(n,r).enumerable}))),t.forEach(function(e){var t;t=n[e],e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t})}return r}({},t.location),n=n={search:a.toString()},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):(function(r){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e.push.apply(e,n)}return e})(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))}),e))},[o,t])]}({queryString:d,groupId:f}),[g,j]=function(r){let{groupId:e}=r,n=e?"docusaurus.tab.".concat(e):null,[t,i]=(0,u.Dv)(n);return[t,(0,a.useCallback)(r=>{n&&i.set(r)},[n,i])]}({groupId:f}),O=p({value:t=null!=h?h:g,tabValues:b})?t:null;return(0,o.A)(()=>{O&&m(O)},[O]),{selectedValue:y,selectValue:(0,a.useCallback)(r=>{if(!p({value:r,tabValues:b}))throw Error("Can't select invalid tab value=".concat(r));m(r),v(r),j(r)},[v,j,b]),tabValues:b,lazy:null!=(e=r.lazy)&&e,block:null!=(n=r.block)&&n}}let f=(0,a.createContext)(null);function b(){let r=a.useContext(f);if(!r)throw Error("useTabsContext() must be used within a Tabs component");return r}function y(r){return(0,t.jsx)(f.Provider,{value:r.value,children:r.children})}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.