En c al crear y devolver la dirección en una variable estática dentro de una función sería lo mismo que inicializar un simple
int sNum2 = 0 ; int * temp = &sNum2;
? static básicamente tendrá su propio tamaño asignado en la memoria, ¿verdad?
y podría simplemente señalarlo desde la función staticNum a partir de ahora?
Tal vez no sea una buena práctica, pero ¿está bien usarlo?
int * staticNum(){ int static sNum=0; int * temp=&sNum; sNum++; return temp; }Este es un código válido.
Una variable static , ya sea que se declare en el ámbito del archivo o dentro de una función, tiene una duración completa del programa. Eso significa que su dirección siempre será válida y se puede desreferenciar de manera segura en cualquier punto del programa.
Sí, está bien de usar. Un puntero a una variable estática es como cualquier otro puntero. Simplemente apuntando al lugar en el segmento de datos donde se almacena la variable estática.
El puntero devuelto por la función.
int * staticNum(){ int static sNum=0; int * temp=&sNum; sNum++; return temp; } será válido porque la variable estática sNum estará viva después de salir de la función.