עזרה בהבנת נקודה מסויימת בקוד בשפת c
היי. יש 2 נקודות שאני לא מבין בקוד המצורף, ואשמח אם מישהו יוכל להסביר לי אותן.
1. אני לא מבין את העניין בmain של ה P*.
m[0] m[1] m[2] m[3]z מה הרעיון של זה ? למה m[0 מצביע על 6 ? אשמח להבין את הרעיון של m ]0] ואולי אבין את שאר הm -ים...
2. בפונ׳ השלישית יש את הערך הטרינארי הזה : *p -= (--k? *(p+1) : a); z
עכשיו לפי מה שאני יודע, אם החלק השמאלי נכון אז מוחזר מה שמימין לסימן שאלה, ואם לא נכון אז החלק שמימין לנקודותיים. אבל מה בדיוק נכון או לא נכון ב k-- ? (האם זה במידה ו k-- שונה מ 0 ?)
תודה למסבירים...
היי. יש 2 נקודות שאני לא מבין בקוד המצורף, ואשמח אם מישהו יוכל להסביר לי אותן.
1. אני לא מבין את העניין בmain של ה P*.
m[0] m[1] m[2] m[3]z מה הרעיון של זה ? למה m[0 מצביע על 6 ? אשמח להבין את הרעיון של m ]0] ואולי אבין את שאר הm -ים...
2. בפונ׳ השלישית יש את הערך הטרינארי הזה : *p -= (--k? *(p+1) : a); z
עכשיו לפי מה שאני יודע, אם החלק השמאלי נכון אז מוחזר מה שמימין לסימן שאלה, ואם לא נכון אז החלק שמימין לנקודותיים. אבל מה בדיוק נכון או לא נכון ב k-- ? (האם זה במידה ו k-- שונה מ 0 ?)
תודה למסבירים...
קוד:
#include <stdio.h>
#include <string.h>
void func1(char *s);
int func2(int **p, int n, int m);
void func3 (int *p, int k);
int main()
{
int m[4][4] = {{1,2,3,4},{5,6,7,8},{10,20,30,40},{50,60,70,80}};
int *p[] = {m[0], m[1], m[2], m[3]};
int arr[] = {6, 2, 7, 3, 10, 2};
func1("SABABA");
printf("%d\n", func2 (p,4,0));
func3 (arr,6);
return 0;
}
void func1(char *s)
{
int a,b,c;
if(!s || !*s)
{
printf("\n");
return;
}
b=strlen(s);
while(b>2)
{
a=0;
if(s[a]==s[b-1])
{
for(c=b-1; c>=a && s[a]==s[c]; a++,c--) ;
if(c<a)
{
int i;
for(i=0; i<b; i++)
printf("%c",s[i]);
printf(" ");
}
}
b--;
}
func1(s+1);
}
int func2 (int **p, int n, int m)
{
if(m<n)
return *(p[m]+m) + func2 (p, n,m+1);
return 0;
}
void func3 (int *p, int k)
{
int a = *p;
while(k)
{
*p -= (--k? *(p+1) : a);
printf("%d ",*p);
p++;
}
printf("\n");
}