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;'또는'unsigned long int iter = sizeof (char) 'unsigned long int iter = sizeof iter/sizeof * cp;' – chux