Retorn de cadena des d'una funció C

Retorn De Cadena Des D Una Funcio C



A corda és una seqüència de caràcters que consta d'un únic caràcter o de diversos caràcters i és una estructura de dades important en la programació d'ordinadors. Quan es treballa amb cordes en C, s'han de realitzar determinades operacions sobre el corda tipus de dades, com ara inicialitzar el corda , assignar contingut, concatenar el cordes , comparant cordes , i retornant el corda .

Aquest article se centra en una d'aquestes operacions en el corda estructura de dades, que està retornant a corda d'una funció C.







Retorn de cadena des d'una funció C

Com corda és una matriu de caràcters i per retornar una cadena d'una funció C, cal passar un punter a l'estructura de dades de la cadena com a argument de la funció crida a la funció cridada com a paràmetre. Aleshores, el punter es pot utilitzar per apuntar a una matriu de caràcters. Un cop el punter apunta a una matriu de caràcters, el corda el valor es pot retornar des de la funció cridada mitjançant la instrucció return.



Podeu mirar l'exemple que es mostra a continuació per entendre millor.



#inclou

const char * el meu nom ( ) {
tornar 'Joan' ;
}

int principal ( buit ) {
imprimirf ( '%s' , el meu nom ( ) ) ;
}





En el codi anterior, en comptes de declarar la variable com ho fem normalment, hem utilitzat un punter amb ella perquè quan tornem aquesta cadena no es produeixi cap error.

Sortida




Una funció C no pot retornar a corda que s'ha especificat com a variable local ja que la variable s'eliminarà (alliberarà) immediatament quan la funció s'hagi acabat d'executar, deixant-la no disponible i activant un avís com a continuació:

#inclou

const char myName ( ) {
nom del caràcter = 'Joan' ;
tornar nom;
}

int principal ( buit ) {
imprimirf ( '%s' , el meu nom ( ) ) ;
}

En aquest codi, a advertència s'activa a mesura que es retorna la cadena sense qualsevol punter.

Sortida


Per tant, podeu escriure el codi de la següent manera:

#inclou

const char * el meu nom ( ) {
char * nom = 'Joan' ;
tornar nom;
}
int principal ( buit ) {
imprimirf ( '%s' , el meu nom ( ) ) ;
}

Sortida


Les variables s'assignen a la pila per defecte, que és el motiu real de la declaració anterior. Tanmateix, quan es declara un punter, el valor al qual apunta s'assigna al munt, que no s'esborra un cop finalitzada la funció. Un cop assignada la memòria, una còpia del fitxer corda s'ha de crear des de la ubicació de memòria original apuntada pel punter i la còpia s'ha de retornar des de la funció cridada. Aleshores, la funció trucada tindrà control sobre les dades de la cadena original, mentre que la funció crida s'encarrega d'alliberar l'espai assignat.

Conclusió

Una funció C pot portar un punter a corda com a argument i retornar el corda valor com a resultat de les operacions realitzades dins de la funció cridada. L'enfocament per aconseguir-ho és utilitzar un punter de char*. La funció de trucada serà responsable de la memòria assignada per emmagatzemar el corda , mentre que la funció cridada s'encarrega d'alliberar l'espai assignat.