From adb034002186d8ba1ce988e4cd63a78a54c58402 Mon Sep 17 00:00:00 2001 From: David Hendriks <davidhendriks93@gmail.com> Date: Wed, 30 Oct 2019 17:34:55 +0000 Subject: [PATCH] added some functions that use pointers to do stuff --- .gitignore | 1 + python-c-api_solution/demolib.c | 12 +++++++-- python-c-api_solution/demolib.h | 4 ++- python-c-api_solution/demolib.o | Bin 1824 -> 2096 bytes python-c-api_solution/main.c | 41 +++++++++++++++++++++++++++--- python-c-api_solution/main.o | Bin 1920 -> 2744 bytes python-c-api_solution/test_script | Bin 8664 -> 8712 bytes 7 files changed, 51 insertions(+), 7 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5761abc --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.o diff --git a/python-c-api_solution/demolib.c b/python-c-api_solution/demolib.c index 39d66e9..fcb2dba 100644 --- a/python-c-api_solution/demolib.c +++ b/python-c-api_solution/demolib.c @@ -8,6 +8,12 @@ int add_number(int number_1, int number_2) { return result; } +int multiply_number(int number_1, int number_2) { + int result = number_1 * number_2; + return result; +} + + // https://stackoverflow.com/questions/8465006/how-do-i-concatenate-two-strings-in-c char* make_str(const char *s1, const char *s2) { @@ -17,8 +23,10 @@ char* make_str(const char *s1, const char *s2) { return result; } -int add_number_using_pointer() { - +int add_number_using_pointer(int (*pf)(int, int), int number_1, int number_2) { + int result; + result = pf(number_1, number_2); + return result; } diff --git a/python-c-api_solution/demolib.h b/python-c-api_solution/demolib.h index 17ce344..16b5644 100644 --- a/python-c-api_solution/demolib.h +++ b/python-c-api_solution/demolib.h @@ -3,4 +3,6 @@ // char construct_string(int number); int add_number(int number_1, int number_2); -char* make_str(const char *s1, const char *s2); \ No newline at end of file +char* make_str(const char *s1, const char *s2); +int add_number_using_pointer(int (*pf)(int, int), int number_1, int number_2); +int multiply_number(int number_1, int number_2); \ No newline at end of file diff --git a/python-c-api_solution/demolib.o b/python-c-api_solution/demolib.o index 5896b43ecea3a7fb3097c0b062930226d5bc57dd..ffc6c06f550025b0a750c2196115c828d48087e8 100644 GIT binary patch delta 544 zcmZ3$w?SZn29p8nL@g8E&e}Jfr7yZ&-|(+@eK9epLNnB(^QlMk8wHQf+83RrPdY;% zbo)N&4t?U$?fRngT<7)w7dl=4bi4jJIq{@E69dD<uhyzE3=9l5KnwzsAi|MPppD6y zmo0>codd{K0OFX*ri}7ZAXWnqgMb!@fT>KK?8o>?5v&;~ss_YD42%rMASFOh0HGN4 zCnqwAGrEFFA21mVCZj;4U?NZzNY`ShYOTpTndI0@b4oG`aw;dEV{#5iOi78)E6q(x zEs8HK&df`XFUZf#D@iSaYVd*5EI^tEi2wYDfM^`zS(6i)#Z?=TWciSEO+gappWMo9 zt(gE70R|fb2*bSBf+oIr@=oUCjAth|vY0den7ot4o{5)nav-DFWC2zU7&8FEtYWoe zvV=%pVAbGsV1yX8U@{|{IcEXLBS4Ta*%8Ql0F|3Dxe>^#V1~$5O+E<ZU4W{L1llPN E0FY0DTmS$7 delta 323 zcmdlWuz+uZ29pBIL@kqv<vEji8TBSRFj}yxFfcIKOrFaqKiPy;X7U17mdSq@&u|t1 zML|G*G9$A%qbZoQ0h7)ka<TzC%VZX2k;xT6_Ize53y5k4V<^o6q`86k&wmJT!XX|w zS&&6sG6PAL7fDz3WJeb9$ptJ1lP|CwVC<Sak=2}0V)98=d&X0fA2Lc$-oeH**?>&~ ziC4fT!E}mYau=H&<2SgH4{Q>gKcH45OcrD}=bXR{;TlX11o9#nA-s&q6M?(~Ob}k+ O<clC4RAnU4a(Mtipj0~m diff --git a/python-c-api_solution/main.c b/python-c-api_solution/main.c index 3e05435..27d24aa 100644 --- a/python-c-api_solution/main.c +++ b/python-c-api_solution/main.c @@ -1,7 +1,12 @@ #include <stdio.h> +#include <stdlib.h> #include "demolib.h" + + + + int main(void) { // Testing stuff for add_number function int getal_1=2; @@ -9,7 +14,7 @@ int main(void) { int result; result = add_number(getal_1, getal_2); - printf("%d\n", result); + printf("result of adding numbers: %d\n", result); // @@ -19,13 +24,41 @@ int main(void) { char* s = make_str(str_1, str_2); // do things with s - printf("%s\n", s); + printf("result of concatting strings: %s\n", s); free(s); // deallocate the string // - // testing stuff to - + // testing stuff to use a pointer to use a function + int (*pf)(int, int); + int pointer_res; + + pf = &add_number; + pointer_res = (pf)(5, 9); + printf("result of using a pointer to the add_number function: %d\n", pointer_res); + // + + // testing stuff to pass a pointer to a function that consecutively uses that pointer to add stuff + int (*pf2)(int, int); + int function_via_pointer_res; + + pf2 = &add_number; + function_via_pointer_res = add_number_using_pointer(pf2, 10, 20); + printf("result of calling a function with a function pointer to add_number: %d\n", function_via_pointer_res); + + int (*pf3)(int, int); + int function_via_pointer_res_2; + + pf3 = &multiply_number; + function_via_pointer_res_2 = add_number_using_pointer(pf3, 10, 20); + printf("result of calling a function with a function pointer to multiply_number: %d\n", function_via_pointer_res_2); + + + // + + + + diff --git a/python-c-api_solution/main.o b/python-c-api_solution/main.o index e29df7dd325a7b1a79365f68f3ad84979b8f9351..da6dae0c35829ddfa9513192e590a17c9e87cb85 100644 GIT binary patch literal 2744 zcmbtW-)j_C6h512)!M{v#fPAM7^#XWb;zQk1{(5%N#<cOqFH<?46~bAvt)NR?A)bE zACf|$uuO&0r~U(l{sV<jL<PlI$b$uuJm#g4hl2VRp^%<4_uSp<bym=xaPK|$JKy>4 znYs7QX5B5$4CHd4EC=Jzn<*4v<zUaBNZkn-f<Y*Goxi>B|GBp5ZVVv2>E5w$NJ@7S zccb&Hv$;#$j(b0G?{^+~x4)w426bt`yZs^gUdMgXbGN;ugbkt2GmjOJv4hZ#mnD+o zawRWOg1boHz55ZW-y>-MNymMdxDPY)Rn7~{dGW_Fq~AT9mZi#noVbtQnz@IWds&%V ziMy4NnZANQ9{{w%xLp@^vuXzm3$^H$9km<fuoaKlrxy-G0A;L$tjDV~qe>tIabwZK zfw(c%OV;DHW1<B1a<dkRuw{#;Efzys#+Pf@)pk@7wPqyOGV?1zy)G3L&;F(+7E!S~ z*Q9&0Qmt3VyXiFWZPb?Qt6U?OHak5%W}hvU+mUG7mz)dE=($2WofXy!mz~iIPGLmi z@+kml6UlPlUWeRDK6hg9;Gv)JV1I@fHL`I!=#xkCKMYI{9k8zCkdoqA9Z^4km-|^U zEAz$xSooJ^7Aj?#1?fS2BV>Vg`Lw77+4Wj*Kx0Xlm`Alb(`QF)2wPrKUh6;agFAij zi+%9%KKOJW{OdkAG=f^>RMG+b+2Y*PWYM3SnYrQ4`}31iMc0Sk5rk#D7ov*frO?Mq z0@YR+YH>fk8$KUjFwPuS0B|zxY0m*Z#`f>Nv{A<CV@JEC@G-`TKd9l8j4S?eo)-;V zoyiL0q(gh7^xFpi6wlXrG}lcu{0RC==V!*hz)^p$-x*hRs`~CRZt6ekqqC#&KS5uu z`<!v5|0B;|X?*>?siR7D()m<6$LS)XQ9Zi;2;)lsY03gPukm$#o8!c%)-@+yZHS-@ z4xSr1E-J4T)&oa`D*~K_Km_2F;~1P)Q%)+)Mk9<c7Bxla%w8>>i$zdbLIS0Qi+;5g zG{WvW|I@KCpB~M;=@W>NsrxNwlB;|gPhg{WIDt*KVg3Z|@Oz`*6>`;=W|+xm7&pIg zYn;cl?qI@SVuUo`H@|?nr1{$3;ru&Z=(Mq*svjw-UBR9x>OM;p;8zx;`gBurYMjEL z@^#){W<eY@xi>lAq;E5DSr<j$tp7S<S^Kxg2SV)=?H}c;e1%gz=Gq8Bo;TzdE||U% m^iPzTPnfxP2*Gbu6k1&l-QIluPcf2}pXZ;tpqnWjGygx;x~S~{ delta 365 zcmdlX+Q2_SgUNwqqL!?R!Ex6+ObiSR$6X&V1F7!N2i>lBI<Ivee*xq%bh<w2c6~B& zgUG~sPR|z}y{sTXk51PQ9^Iip?E1o^^O^@#El~IeQ0NDokHp>q(s%N(Y6=%aB16*T zB~1F0Z!oC{b%BH(`2^aSoO#)pT6x$xCKs|xP1az(z|_Ss`4{uF$tzgwI15TkiW$<1 zQd1|3vqmy9OfF;<XJne($to{d4AKt-EI`Z$#DD%nK>g%EHu1?n*dBn4xy5eA#Q^df z5FB8bEX85QcxtjBv-IQ~4izYC4Vd+iLwxcJc7e%1I3$=ZF-#WXv}61SQOK#n#K1Ut s5~m&00p`h<IPEws7$N30OqS#_=iC7bKp^m#9LZ(QbpvWwBFJhv0Oy%)kpKVy diff --git a/python-c-api_solution/test_script b/python-c-api_solution/test_script index f97b74885b85f148dd55b72354cc0b1763672653..ba528aa60114d74a4dd2597f43a6fbfa1838d331 100755 GIT binary patch delta 3255 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 W!%eOLmL|2gVI<t7{1z^RANwyt;2dZG delta 2704 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 -- GitLab