0
void配列インデックスの値を指定された値に変更する関数を作成します。符号付きcharポインタを持つint配列の値を変更する
charコピー(charは1バイト)から特定のインデックスの値を変更する簡単な関数を使ってテストしています。 コピーに次のインデックスをポイントして値を変更できるので、私はcharを使用します。
機能は次のとおりです。私は-1に値を変更しようとすると
void
change_value(int ** ptrs, int pos, int val) {
char * cp = *ptrs;
/* Assign a copy of the array */
unsigned long int iter = sizeof(int)/sizeof(char);
/* Store the size for every index of the array */
for (int i = 0; i < pos; i++)
for (unsigned long int e = 0; e < iter; e++)
cp++;
/* Advance to the position */
*cp = (signed char)val;
/* Assign the value */
}
問題が来ます。私は、をにに、に-1を255に変換すると、の符号付き文字への変換を代入に追加しているため、問題だと思います。しかし、まだ結果はありません。
主な機能は次のとおりです。
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
/* Create an array for values */
change_value(&arr, 1, 0);
/* Change value */
for (int i = 0; i < 5; i++)
printf("arr[%d] : %d\n", i, arr[i]);
/* Show the array */
printf("\n");
change_value(&arr, 2, -1);
/* Change value */
for (int i = 0; i < 5; i++)
printf("arr[%d] : %d\n", i, arr[i]);
/* Show the array */
出力:
arr[0] : 1
arr[1] : 0
arr[2] : 3
arr[3] : 4
arr[4] : 5
arr[0] : 1
arr[1] : 0
arr[2] : 255
arr[3] : 4
arr[4] : 5
'sizeof(int)/ sizeof(char)'? 'sizeof(char)'は常に1 .... –
'unsigned long int iter = sizeof(iter; sizeof(char);)'というよりは、 'unsigned long int iter = sizeof iter/sizeof * cp;' – chux