In Ordnung, also habe ich mit C herumgespielt, als ich dieses komische Verhalten gefunden habe. Ich habe den Operator sizeof verwendet, um die Größe des Arrays in der Hauptfunktion zu ermitteln, und dann habe ich das Array an eine andere Funktion übergeben und den Operator sizeof erneut verwendet und eine andere Zahl als den Anfangswert erhalten. Das erste Mal, wenn ich es teste, bekomme ich den richtigen Wert von 12 und dann das zweite Mal, wenn ich es teste, habe ich 4 und ich verstehe nicht warum.Der Wert ändert sich in C++ und ich weiß nicht warum
#include <stdio.h>
#include <ctype.h>
int canPrint(char ch) { return isalpha(ch) || isblank(ch); }
void print_Letters(char arg)
{
if (canPrint(arg))printf("%c==%d \n",arg,arg);
}
void printarg(char ch[])
{
unsigned int value = sizeof(ch);//returns 4
for (int i = 0;i<value; i++)
{
print_Letters(ch[i]);
}
}
int main(int argc, char *argv[])
{
char something[]="work please";
printf("%d \n",sizeof(char));// return 1
printf("%d \n",sizeof(something));//returns 12
printarg(something);
char ch;
scanf_s(" %c",&ch);//used to stop program so that I can read results
return 0;
}
Frage sagt C, aber Sie haben eine C++ Tag. Welches ist es? – Thebluefish
Wäre es zu viel Mühe, Sie zu bitten, Ihren Code richtig zu formatieren? (Da Sie andere bitten, es zu lesen) – davmac
Entschuldigung, es behoben C++ – bordenE