{"id":406,"date":"2023-02-25T10:51:33","date_gmt":"2023-02-25T02:51:33","guid":{"rendered":"https:\/\/www.appblog.cn\/?p=406"},"modified":"2023-04-29T21:36:44","modified_gmt":"2023-04-29T13:36:44","slug":"android-ndk-basic-c-structure-and-pointer","status":"publish","type":"post","link":"https:\/\/www.appblog.cn\/index.php\/2023\/02\/25\/android-ndk-basic-c-structure-and-pointer\/","title":{"rendered":"Android NDK\u57fa\u78406\uff1aC_\u7ed3\u6784\u4f53\u4e0e\u6307\u9488"},"content":{"rendered":"<h2>\u7ed3\u6784\u4f53\u5b9a\u4e49<\/h2>\n<pre><code class=\"language-c\">#define _CRT_SECURE_NO_WARNINGS\n#include &lt;stdlib.h&gt;\n#include &lt;stdio.h&gt;\n#include &lt;string.h&gt;\n#include &lt;Windows.h&gt;\n\n\/\/\u7ed3\u6784\u4f53\u662f\u4e00\u79cd\u6784\u9020\u6570\u636e\u7c7b\u578b\n\/\/\u628a\u4e0d\u540c\u7684\u6570\u636e\u7c7b\u578b\u6574\u5408\u8d77\u6765\u6210\u4e3a\u4e00\u4e2a\u81ea\u5b9a\u4e49\u7684\u6570\u636e\u7c7b\u578b\nstruct Man {\n    \/\/\u6210\u5458\n    char name[20];\n    int age;\n    \/\/int(*func)();\n};\n\nvoid main() {\n    \/\/\u521d\u59cb\u5316\u7ed3\u6784\u4f53\u7684\u53d8\u91cf\n    \/\/1. \u7b2c\u4e00\u79cd\u65b9\u5f0f\n    \/\/struct Man m1 = {&quot;Jack&quot;, 21};\n    \/\/2. \u7b2c\u4e8c\u79cd\u65b9\u5f0f\n    struct Man m1;\n    m1.age = 23;\n    \/\/m1.name = &quot;Rose&quot;;  \/\/char* name\u53ef\u4ee5\u8d4b\u503c\uff0c\u4f46\u5b57\u7b26\u4e32\u6570\u7ec4\u53ea\u80fd\u5728\u58f0\u660e\u65f6\u8d4b\u503c\n    strcpy(m1.name, &quot;rose&quot;);\n    sprintf(m1.name, &quot;Jason&quot;);\n\n    \/\/\u7c7b\u4f3cJavaScript\u5b57\u9762\u91cf\u8d4b\u503c\uff0c\u53ea\u80fd\u5728\u53d8\u91cf\u58f0\u660e\u65f6\u8d4b\u503c\n    \/\/m1 = {};\n    struct Man m2 = m1;\n\n    printf(&quot;%s,%d\\n&quot;, m1.name, m1.age);\n\n    getchar();\n}<\/code><\/pre>\n<p><!-- more --><\/p>\n<h2>\u7ed3\u6784\u4f53\u7684\u51e0\u79cd\u5199\u6cd5<\/h2>\n<pre><code class=\"language-c\">struct Man {\n    char name[20];\n    int age;\n} m1, m2 = {&quot;jack&quot;,20}; \/\/m1\u7ed3\u6784\u4f53\u53d8\u91cf\u540d\n\n\/\/typedef int Age;\n\nvoid main() {\n    strcpy(m1.name, &quot;Jack&quot;);\n    m1.age = 10;\n    printf(&quot;%s,%d\\n&quot;, m2.name, m2.age);\n\n    getchar();\n}<\/code><\/pre>\n<pre><code class=\"language-c\">\/\/\u533f\u540d\u7ed3\u6784\u4f53\n\/\/\u63a7\u5236\u7ed3\u6784\u4f53\u53d8\u91cf\u7684\u4e2a\u6570\uff08\u9650\u91cf\u7248\uff09\uff0c\u76f8\u5f53\u4e8e\u5355\u4f8b\nstruct {\n    char name[20];\n    int age;\n} m1;<\/code><\/pre>\n<pre><code class=\"language-c\">\/\/\u7ed3\u6784\u4f53\u5d4c\u5957\nstruct Teacher {\n    char name[20];\n};\n\nstruct Student {\n    char name[20];\n    int age;\n    struct Teacher t;\n};\n\nvoid main() {\n    \/\/\u5b57\u9762\u91cf\u7684\u65b9\u5f0f\n    \/\/struct Student s1 = { &quot;jack&quot;, 21, {&quot;Jason&quot;} };\n    struct Student s1;\n    s1.age = 10;\n    strcpy(s1.t.name, &quot;Jason&quot;);\n    system(&quot;pause&quot;);\n}<\/code><\/pre>\n<pre><code class=\"language-c\">\/\/\u7ed3\u6784\u4f53\u5d4c\u59572\nstruct Student {\n    char name[20];\n    int age;\n    struct Teacher {\n        char name[20];\n    } t;\n};\n\nvoid main() {\n    struct Student s1;\n    strcpy(s1.t.name, &quot;Jason&quot;);\n    \/\/struct Teacher t;  \/\/\u53ef\u4ee5\u76f4\u63a5\u5728\u5916\u9762\u4f7f\u7528\n\n    system(&quot;pause&quot;);\n}<\/code><\/pre>\n<h2>\u7ed3\u6784\u4f53\u4e0e\u6307\u9488<\/h2>\n<pre><code class=\"language-c\">struct Man {\n    char name[20];\n    int age;\n};\n\nvoid main() {\n    struct Man m1 = {&quot;Jack&quot;,30};\n    \/\/\u7ed3\u6784\u4f53\u6307\u9488\n    struct Man *p = &amp;m1;\n    printf(&quot;%s,%d\\n&quot;, m1.name, m1.age);\n    printf(&quot;%s,%d\\n&quot;, (*p).name, (*p).age);\n    \/\/\u201c-&gt;\u201d\uff08\u7bad\u5934\uff09\u662f\u201c(*p).\u201d\u7b80\u5199\u5f62\u5f0f\n    printf(&quot;%s,%d\\n&quot;, p-&gt;name, p-&gt;age);\n    \/\/(*env)-&gt;\n\n    system(&quot;pause&quot;);\n}<\/code><\/pre>\n<pre><code class=\"language-c\">\/\/\u6307\u9488\u4e0e\u7ed3\u6784\u4f53\u6570\u7ec4\nstruct Man {\n    char name[20];\n    int age;\n};\n\nvoid main() {    \n    struct Man mans[] = { {&quot;Jack&quot;,20}, {&quot;Rose&quot;, 19} };\n    \/\/\u904d\u5386\u7ed3\u6784\u4f53\u6570\u7ec4\n    \/\/1. \u7b2c\u4e00\u79cd\u65b9\u5f0f\n    struct Man *p = mans;\n    for (; p &lt; mans + 2; p++) {\n        printf(&quot;%s,%d\\n&quot;, p-&gt;name, p-&gt;age);\n    }\n\n    \/\/2. \u7b2c\u4e00\u79cd\u65b9\u5f0f\n    int i = 0;\n    for (; i &lt; sizeof(mans) \/ sizeof(struct Man); i++) {\n        printf(&quot;%s,%d\\n&quot;, mans[i].name, mans[i].age);\n    }\n\n    \/\/(*env)-&gt;\n    system(&quot;pause&quot;);\n}<\/code><\/pre>\n<pre><code class=\"language-c\">\/\/\u7ed3\u6784\u4f53\u7684\u5927\u5c0f\uff08\u5b57\u8282\u5bf9\u9f50\uff09\nstruct Man {\n    int age;\n    double weight;    \n};\n\nvoid main() {\n    \/\/\u7ed3\u6784\u4f53\u53d8\u91cf\u7684\u5927\u5c0f\uff0c\u5fc5\u987b\u662f\u6700\u5bbd\u57fa\u672c\u6570\u636e\u7c7b\u578b\u7684\u6574\u6570\u500d\n    \/\/\u63d0\u5347\u8bfb\u53d6\u7684\u6548\u7387\n    struct Man m1 = {20, 89.0};  \/\/\u8f93\u51fa16\n    printf(&quot;%#x,%d\\n&quot;, &amp;m1, sizeof(m1));\n    getchar();\n}<\/code><\/pre>\n<h2>\u7ed3\u6784\u4f53\u4e0e\u52a8\u6001\u5185\u5b58\u5206\u914d<\/h2>\n<pre><code class=\"language-c\">struct Man {\n    char *name;\n    int age;\n};\n\n\/\/\u7ed3\u6784\u4f53\u4e0e\u52a8\u6001\u5185\u5b58\u5206\u914d\nvoid main() {\n    struct Man *m_p = (struct Man*) malloc(sizeof(struct Man) * 10);\n    struct Man *p = m_p;\n    \/\/\u8d4b\u503c\n    p-&gt;name = &quot;Jack&quot;;\n    p-&gt;age = 20;\n    p++;\n    p-&gt;name = &quot;Rose&quot;;\n    p-&gt;age = 20;\n\n    struct Man *loop_p = m_p;\n    for (; loop_p &lt; m_p + 2; loop_p++) {\n       printf(&quot;%s,%d\\n&quot;, loop_p-&gt;name, loop_p-&gt;age);\n    }\n\n    free(m_p);\n    getchar();\n}<\/code><\/pre>\n<h2>\u7ed3\u6784\u4f53\u51fd\u6570\u6307\u9488\u6210\u5458<\/h2>\n<pre><code class=\"language-c\">#define _CRT_SECURE_NO_WARNINGS\n#include &lt;stdlib.h&gt;\n#include &lt;stdio.h&gt;\n#include &lt;string.h&gt;\n#include &lt;Windows.h&gt;\n\n\/\/\u7ed3\u6784\u4f53\u51fd\u6570\u6307\u9488\u6210\u5458\nstruct Girl {\n    char *name;\n    int age;\n    \/\/\u51fd\u6570\u6307\u9488\n    void(*sayHi)(char*);\n};\n\/\/Girl\u7ed3\u6784\u4f53\u7c7b\u4f3c\u4e8eJava\u4e2d\u7684\u7c7b\uff0cname\u548cage\u7c7b\u4f3c\u4e8e\u5c5e\u6027\uff0csayHi\u7c7b\u4f3c\u4e8e\u65b9\u6cd5\n\nvoid sayHi(char* text) {\n    MessageBoxA(0, text, &quot;title&quot;, 0);\n}\n\nvoid main() {\n    struct Girl girl;\n    girl.name = &quot;Lucy&quot;;\n    girl.age = 18;\n    girl.sayHi = sayHi;\n\n    girl.sayHi(&quot;hello&quot;);\n\n    getchar();\n}<\/code><\/pre>\n<pre><code class=\"language-c\">typedef struct Girl {\n    char *name;\n    int age;\n    \/\/\u51fd\u6570\u6307\u9488\n    void(*sayHi)(char*);\n} Girl;\n\n\/\/Girl\u7ed3\u6784\u4f53\u6307\u9488\u53d6\u522b\u540dGirlP\ntypedef Girl* GirlP;\n\nvoid sayHi(char* text) {\n    MessageBoxA(0, text, &quot;title&quot;, 0);\n}\n\n\/\/\u6539\u540d\nvoid rename(GirlP gp) {\n    gp-&gt;name = &quot;Lily&quot;;\n}\n\nvoid main() {\n    Girl g = { &quot;Lucy&quot;, 18, sayHi };\n    GirlP gp = &amp;g;\n    gp-&gt;sayHi(&quot;Byebye!&quot;);\n    \/\/\u4f20\u9012\u6307\u9488\uff0c\u6539\u540d\n    rename(gp);\n\n    getchar();\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u7ed3\u6784\u4f53\u5b9a\u4e49 #define _CRT_SECURE_NO_WARNINGS #include &lt;stdl [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"class_list":["post-406","post","type-post","status-publish","format-standard","hentry","category-android-ndk"],"_links":{"self":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/406","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/comments?post=406"}],"version-history":[{"count":0,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/406\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/media?parent=406"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/categories?post=406"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/tags?post=406"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}