C Fcia a vyznam pointru – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

C Fcia a vyznam pointru – C / C++ – Fórum – Programujte.comC Fcia a vyznam pointru – C / C++ – Fórum – Programujte.com

 

Plui
~ Anonymní uživatel
46 příspěvků
6. 10. 2015   #1
-
0
-

Zdravim,znova by som sa chcel spytat ohladom pointrov. Mam kod  

#include <stdio.h>
#include <stdlib.h>



int main()
{
    char  *isLetter(char c);
    int pismeno;

    printf("Posunie kazde pismeno na to nasledujuce \n"); /* Program ktory posunie pismena */

    while ((pismeno=getchar())!=EOF){
        isLetter(pismeno);
    }
    return 0;
}
char  *isLetter(char c){
           if (c==10) //je to enter
                ;
           else if (c >96 && c<96+26) //je MALE pismeno
                printf("%c -> %c\n",c,c+1);
           else
                printf("\007 %c -> Nezadal si male pismeno!\n",c); //chyba
    }

A chcem sa spytat ci ma nejaky vyznam ten pointer "*isLetter" ,vsimol som si ze to ide aj bez toho . A na druhu stranu kedy by som ho tam potreboval :) Druha otazka mozno trosku tazsia,teda ze tych pripadov je vela zalezi od situacie ale aspon tak nieco ,dakujem pekne :)

Nahlásit jako SPAM
IP: 78.98.18.–
Plui
~ Anonymní uživatel
46 příspěvků
6. 10. 2015   #2
-
0
-

Je tam drobna chybicka ma tam byt 97+26 ..ale to len detail

Nahlásit jako SPAM
IP: 78.98.18.–
Plui
~ Anonymní uživatel
46 příspěvků
6. 10. 2015   #3
-
0
-

Trosku som to ten kod este skraslil ,nevadi ked pouzivam tolkokrat #define??  

#include <stdio.h>
#include <stdlib.h>
#define HORNA_HRANICA 122
#define DOLNA_HRANICA 97
#define ROZDIEL_A_Z 25


int main()
{
    char  *isLetter(char c);
    int pismeno;

    printf("Posunie kazde pismeno na to nasledujuce \n"); /* Program ktory posunie pismena */

    while ((pismeno=getchar())!=EOF){
        isLetter(pismeno);
    }
    return 0;
}
char  *isLetter(char c){
           if (c==10) //je to enter
                ;
           else if (c >=DOLNA_HRANICA && c<=HORNA_HRANICA) //je MALE pismeno
                c==HORNA_HRANICA ? printf("%c -> %c\n",c,c-ROZDIEL_A_Z) : printf("%c -> %c\n",c,c+1); //je to Z
            else
                printf("\007%c -> Nezadal si male pismeno!\n",c); //chyba
    }
Nahlásit jako SPAM
IP: 78.98.18.–
KIIV
~ Moderátor
+43
God of flame
6. 10. 2015   #4
-
0
-

Vraceni pointeru je tam zbytecne, protoze nikde nic nevracis.

Lepsi by uz bylo vracet int a mit tam return c >=DOLNA_HRANICA && c<=HORNA_HRANICA;

Nebo proste pouzit isalpha(), isalnum() ze standardnich libek a tak
 

Nahlásit jako SPAM
IP: 94.113.92.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Plui
~ Anonymní uživatel
46 příspěvků
6. 10. 2015   #5
-
0
-

Aha,a keby chcem vrátiť napríklad return true; tak aký typ.musí byť ta fcia?

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 78.98.18.–
KIIV
~ Moderátor
+43
God of flame
6. 10. 2015   #6
-
0
-

v C int, v C++ bool

Nahlásit jako SPAM
IP: 94.113.92.–
Program vždy dělá to co naprogramujete, ne to co chcete...
7. 10. 2015   #7
-
0
-

Návratový typ funkce char* má smysl např u funkce která má najít znak v řetězci. Pak by taková funkce vracela ukazatel na výskyt hledaného znaku (tuším funkce strchr tak funguje). 

U funkce, která nevrací nic jako ta tvoje, je vhodnější void.

hu

Nahlásit jako SPAM
IP: 2001:67c:1222:800:493:c9f...–
Plui
~ Anonymní uživatel
46 příspěvků
7. 10. 2015   #8
-
0
-

A keby mame takyto kod  

#include<stdio.h>

	void swapping(int *ptr_c, int *ptr_d) {
		int tmp;

		tmp = *ptr_c;
		*ptr_c = *ptr_d;
		*ptr_d = tmp;
		printf("In function: %d %d\n", *ptr_c , *ptr_d);
	}

	int main(void) {
		int a,b;

		a=5;
		b=10;
		printf("input: %d %d\n", a, b);
		swapping(&a,&b);
		printf("output: %d %d\n", a, b);
                return 0;
	}


*ptr_c vlastne ukazuje na premennu "a",*ptr_d ukazuje na b ,cize uchovava adresu a pracuje v podstate iba s kopiou tej premennej,pochopil som spravne? 

Nahlásit jako SPAM
IP: 78.98.18.–
7. 10. 2015   #9
-
0
-

Ukazatel ukazuje na proměnnou a proto nepracuje s její kopií, pracuje přímo s proměnnou na kterou ukazuje. Zde se ukazatelé používají aby změny hodnot proběhli přímo v proměnných vně funkce. Pokud by se funkci jako parametry předávaly hodnoty proměnných, funkce by měnila pouze kopii na stacku a při návratu funkce by tyto kopie zanikly.

hu

Nahlásit jako SPAM
IP: 193.86.81.–
Plui
~ Anonymní uživatel
46 příspěvků
7. 10. 2015   #10
-
0
-

Jo aha,dik :)

Nahlásit jako SPAM
IP: 78.98.18.–
Plui
~ Anonymní uživatel
46 příspěvků
8. 10. 2015   #11
-
0
-

Preco mi tento kod stale vyhadzuje 92 ? :)  

#include <stdio.h>
#include <stdlib.h>

int main()
{
    void vratDvojnasobok(int *p);
    int n;
    
    scanf("Zadaj cislo %d",&n);
    vratDvojnasobok(&n);
    printf("\n%d",n);
    return 0;

}

void vratDvojnasobok(int *p){
    *p=*p*2;
}
Nahlásit jako SPAM
IP: 78.98.18.–
BDS+3
Věrný člen
8. 10. 2015   #12
-
0
-

#11 Plui
Aby ti to fungovalo, musel bys zadat například:

Zadaj cislo 12

Nahlásit jako SPAM
IP: 185.69.69.–
W11 :)
Plui
~ Anonymní uživatel
46 příspěvků
8. 10. 2015   #13
-
0
-

Ouch...tyvole ja som slepy asi :) diky moc

Nahlásit jako SPAM
IP: 78.98.18.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 43 hostů

Podobná vlákna

Vyznam pointeru — založil Alan

Má význam učit se C# ??? — založil ospaly.stanislav

Význam modifikátorů — založil paul27

Význam IE6 — založil Onsi

Význam #define a typedef — založil Zutent

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý