< 1> < 2> < 3> < 4> < 5> < 6> < 7> < 8> < 9> < 10> < 11> < 12> < 13> < 14> < 15> < 16> < 17> < 18> < 19> < 20> < 21> < 22> < 23> < 24> < 25> < 26> < 27> < 28> | int StringLength(char *str){//(1) /****************************** 文字列のバイト数を数えて返す。 戻り値:strのバイト数 str:[入力]バイト数を数える対象の文字列 ******************************/ int i; for(i=0;str[i]!='\0';i++);//(2) return i; } int main(void){ char str1[11]="abcde"; char str2[11]="あいうえお"; char str3[11]="1\n23\n456"; printf("%sの長さ:%d\n\n",str1,StringLength(str1));//(3) printf("%sの長さ:%d\n\n",str2,StringLength(str2)); printf("%sの長さ:%d\n\n",str3,StringLength(str3)); //終了待ち getchar(); return 0; } |
< 1> < 2> < 3> < 4> < 5> < 6> < 7> < 8> < 9> < 10> < 11> < 12> < 13> < 14> < 15> < 16> < 17> < 18> < 19> < 20> < 21> < 22> < 23> < 24> < 25> < 26> < 27> < 28> < 29> < 30> | int StringLength(char *str){//(1) /****************************** 文字列のバイト数を数えて返す。 戻り値:strのバイト数 str:[入力]バイト数を数える対象の文字列 ******************************/ int i; for(i=0;str[i]!='\0';i++){ str[i]='a';//(2)どうしてこんなコードが?とか突っ込んではいけません(笑) } return i; } int main(void){ char str1[11]="abcde"; char str2[11]="あいうえお"; char str3[11]="1\n23\n456"; printf("%sの長さ:%d\n\n",str1,StringLength(str1)); printf("%sの長さ:%d\n\n",str2,StringLength(str2)); printf("%sの長さ:%d\n\n",str3,StringLength(str3)); //終了待ち getchar(); return 0; } |
実体ID(絶対) | 実体の型 | 保持値 | 所属 |
---|---|---|---|
0x0013FF5C | char[11] | "abcde" | main(str1,line 17) |
0x0013FF5C | char | 97('a') | main(str1[0],line 17) |
0x0013FF5D | char | 98('b') | main(str1[1],line 17) |
0x0013FF5E | char | 99('c') | main(str1[2],line 17) |
0x0013FF5F | char | 100('d') | main(str1[3],line 17) |
0x0013FF60 | char | 101('e') | main(str1[4],line 17) |
0x0013FF61 | char | 0('\0') | main(str1[5],line 17) |
0x0013FF62 | char | 0('\0') | main(str1[6],line 17) |
0x0013FF63 | char | 0('\0') | main(str1[7],line 17) |
0x0013FF64 | char | 0('\0') | main(str1[8],line 17) |
0x0013FF65 | char | 0('\0') | main(str1[9],line 17) |
0x0013FF66 | char | 0('\0') | main(str1[10],line 17) |
0x0013FF68 | char[11] | "あいうえお" | main(str2,line 18) |
0x0013FF74 | char[11] | "1\n23\n456" | main(str3,line 19) |
0x0013FF08 | char* | 0x0013FF5C(main::str1) | StringLength(str,line 3) |
0x0013FEFC | int | 0 | StringLength(i,line 11) |
通し記号 | 型 | 値 | 種別 |
---|---|---|---|
A | char* | 0x0013FF5C | 変数(str)(参照先:main::str1) |
B | 演算子( [] )(その他、優先16、結合→) | ||
C | int | 0 | 変数(i) |
B' | 演算子Bの終点 | ||
D | 演算子(=)(2項、算術、優先2、結合←) | ||
E | char | 97('a') | 定数 |
通し記号 | 型 | 値 | 種別 |
---|---|---|---|
A | char& | 97('a') | 一時変数(参照先:main::str1[0](0x0013FF5C)) |
B | 演算子(=)(2項、算術、優先2、結合←) | ||
C | char | 97('a') | 定数 |
< 1> < 2> < 3> < 4> < 5> < 6> < 7> < 8> < 9> < 10> < 11> < 12> < 13> < 14> < 15> < 16> < 17> < 18> < 19> < 20> < 21> < 22> < 23> < 24> < 25> < 26> < 27> < 28> < 29> < 30> | int StringLength(const char *str){//(1)引数型をconst付きに /****************************** 文字列のバイト数を数えて返す。 戻り値:strのバイト数 str:[入力]バイト数を数える対象の文字列 ******************************/ int i; for(i=0;str[i]!='\0';i++){ str[i]='a';//(2)どうしてこんなコードが?とか突っ込んではいけません(笑) } return i; } int main(void){ char str1[11]="abcde"; char str2[11]="あいうえお"; char str3[11]="1\n23\n456"; printf("%sの長さ:%d\n\n",str1,StringLength(str1)); printf("%sの長さ:%d\n\n",str2,StringLength(str2)); printf("%sの長さ:%d\n\n",str3,StringLength(str3)); //終了待ち getchar(); return 0; } |
< 1> < 2> < 3> < 4> < 5> < 6> < 7> < 8> < 9> | const char *p; char *p2; p="abcde";//const char[6]->const char*なので、これは問題ありません。 p2="abcde";//const char[6]->char*なのですが・・・? p2=p;//やってることは同じ(pを介して"abcde"の絶対IDを代入)はずなのに、こっちは文句を言います。 return 0; } |