{"id":9832,"date":"2022-09-20T23:36:08","date_gmt":"2022-09-20T18:06:08","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-confusion-regarding-handling-of-different-pointers-by-compiler\/"},"modified":"2022-09-20T23:36:08","modified_gmt":"2022-09-20T18:06:08","slug":"solved-confusion-regarding-handling-of-different-pointers-by-compiler","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-confusion-regarding-handling-of-different-pointers-by-compiler\/","title":{"rendered":"[Solved] Confusion regarding Handling of Different Pointers by Compiler"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-9894593\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"9894593\" data-parentid=\"9893676\" data-score=\"2\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>Maybe a concrete example would help.  Try this:<\/p>\n<pre><code>#include &lt;stdio.h&gt;\n\nconst double step_size = 5.0; \/\/ degrees of arc\n\nstruct Location {\n    double latitude;\n    double longitude;\n};\n\nvoid go_north(struct Location *const loc) {\n    loc-&gt;latitude += step_size;\n}\n\nint main() {\n    struct Location there;\n    there.latitude  =   41.0;\n    there.longitude = -101.5;\n    go_north(&amp;there);\n    printf(\"Lat. %6.1f, long. %6.1f.\\n\", there.latitude, there.longitude);\n    return 0;\n}\n<\/code><\/pre>\n<p>How does the compiler know that the address *go_north()* receives is the address of a <em>struct Location?<\/em>  Answer:  the programmer has said so, by writing the function control *void go_north(struct Location *const loc).*<\/p>\n<p>Regarding your comment on lexical analysis, believe it or not, the linker does not need to know anything about the size or layout of an object pointed to, even if pointers to such objects are passed around between various <em>*.o<\/em> objects.  This is why header files are used:  so that the pre-link compiler proper knows the layout at pre-linking compile time.  A lot of strange things can go in a symbol table in special circumstances, so I&#8217;ll not be so bold as to assert, categorically, that no symbol table ever contains the information you suggest; but in normal usage the symbol table omits the information, because the linker does not need it.<\/p>\n<p>One suspects that this does not altogether answer your question, but the example might help to focus the question to make it specific enough that it can be answered.  So, if a concrete example helps, plus this partial answer, here they are.<\/p>\n<p>(If you happen to be on a Linux platform, you might find the <em>readelf<\/em> command very interesting.)<\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">4<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved Confusion regarding Handling of Different Pointers by Compiler <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] Maybe a concrete example would help. Try this: #include &lt;stdio.h&gt; const double step_size = 5.0; \/\/ degrees of arc struct Location { double latitude; double longitude; }; void go_north(struct Location *const loc) { loc-&gt;latitude += step_size; } int main() { struct Location there; there.latitude = 41.0; there.longitude = -101.5; go_north(&amp;there); printf(&#8220;Lat. %6.1f, long. %6.1f.\\n&#8221;, &#8230; <a title=\"[Solved] Confusion regarding Handling of Different Pointers by Compiler\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-confusion-regarding-handling-of-different-pointers-by-compiler\/\" aria-label=\"More on [Solved] Confusion regarding Handling of Different Pointers by Compiler\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[2763,2764,712],"class_list":["post-9832","post","type-post","status-publish","format-standard","hentry","category-solved","tag-compiler-construction","tag-compiler-theory","tag-pointers"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] Confusion regarding Handling of Different Pointers by Compiler - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-confusion-regarding-handling-of-different-pointers-by-compiler\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] Confusion regarding Handling of Different Pointers by Compiler - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] Maybe a concrete example would help. Try this: #include &lt;stdio.h&gt; const double step_size = 5.0; \/\/ degrees of arc struct Location { double latitude; double longitude; }; void go_north(struct Location *const loc) { loc-&gt;latitude += step_size; } int main() { struct Location there; there.latitude = 41.0; there.longitude = -101.5; go_north(&amp;there); printf(&quot;Lat. %6.1f, long. %6.1f.n&quot;, ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-confusion-regarding-handling-of-different-pointers-by-compiler\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-20T18:06:08+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-confusion-regarding-handling-of-different-pointers-by-compiler\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-confusion-regarding-handling-of-different-pointers-by-compiler\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] Confusion regarding Handling of Different Pointers by Compiler\",\"datePublished\":\"2022-09-20T18:06:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-confusion-regarding-handling-of-different-pointers-by-compiler\/\"},\"wordCount\":236,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"compiler-construction\",\"compiler-theory\",\"pointers\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-confusion-regarding-handling-of-different-pointers-by-compiler\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-confusion-regarding-handling-of-different-pointers-by-compiler\/\",\"name\":\"[Solved] Confusion regarding Handling of Different Pointers by Compiler - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-09-20T18:06:08+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-confusion-regarding-handling-of-different-pointers-by-compiler\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-confusion-regarding-handling-of-different-pointers-by-compiler\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-confusion-regarding-handling-of-different-pointers-by-compiler\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] Confusion regarding Handling of Different Pointers by Compiler\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] Confusion regarding Handling of Different Pointers by Compiler - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-confusion-regarding-handling-of-different-pointers-by-compiler\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] Confusion regarding Handling of Different Pointers by Compiler - JassWeb","og_description":"[ad_1] Maybe a concrete example would help. Try this: #include &lt;stdio.h&gt; const double step_size = 5.0; \/\/ degrees of arc struct Location { double latitude; double longitude; }; void go_north(struct Location *const loc) { loc-&gt;latitude += step_size; } int main() { struct Location there; there.latitude = 41.0; there.longitude = -101.5; go_north(&amp;there); printf(\"Lat. %6.1f, long. %6.1f.n\", ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-confusion-regarding-handling-of-different-pointers-by-compiler\/","og_site_name":"JassWeb","article_published_time":"2022-09-20T18:06:08+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-confusion-regarding-handling-of-different-pointers-by-compiler\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-confusion-regarding-handling-of-different-pointers-by-compiler\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] Confusion regarding Handling of Different Pointers by Compiler","datePublished":"2022-09-20T18:06:08+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-confusion-regarding-handling-of-different-pointers-by-compiler\/"},"wordCount":236,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["compiler-construction","compiler-theory","pointers"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-confusion-regarding-handling-of-different-pointers-by-compiler\/","url":"https:\/\/jassweb.com\/solved\/solved-confusion-regarding-handling-of-different-pointers-by-compiler\/","name":"[Solved] Confusion regarding Handling of Different Pointers by Compiler - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-09-20T18:06:08+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-confusion-regarding-handling-of-different-pointers-by-compiler\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-confusion-regarding-handling-of-different-pointers-by-compiler\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-confusion-regarding-handling-of-different-pointers-by-compiler\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] Confusion regarding Handling of Different Pointers by Compiler"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/9832","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=9832"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/9832\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=9832"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=9832"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=9832"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}