GCC 4.4.4 C89은
warning assignment makes integer from pointer without a cast
**devices = device_buff;
warning: value computed is not used
*devices++;
포인터 배열로 문자 버퍼를 할당 I는 아래의 코드와 상기 경고를 얻는다. 내가하려는 것은 사용자로부터 의견을 얻는 것이다. 그리고 그 char 배열을 포인터 배열에 할당하십시오. 따라서 포인터의 배열에는 입력 된 모든 장치가 포함됩니다. 그러나, 나는이 라인에 UB 무엇입니까 :
**devices = device_buff;
많은 조언을 주셔서 감사합니다,
static void device_input()
{
#define DEVICE_SIZE 80
char device_buff[DEVICE_SIZE] = {0};
char **devices = NULL;
size_t i = 0;
for(i = 0; i < 3; i++) {
printf("Enter device name: ");
fgets(device_buff, (size_t)DEVICE_SIZE, stdin);
**devices = device_buff;
*devices++;
}
/* NULL terminate last element */
*devices = NULL;
printf("Display devices\n");
while(*devices != NULL) {
printf("Device [ %s ]\n", *devices++);
}
}
"그 사람이하고있는 일을 정확하게 이해하지 못하면 오히려 사용하기가 불가능합니다."- 정수와 비슷합니까? 그리고 아니, 그들은 "열심히"하지 않습니다. –
@Neil 정수형과 마찬가지로, 전문 프로그래밍에 대해 말하면, 우리가 항상 보게되는이 프로그래머를위한 정수와 포인터의 차이가 있음을 인정해야합니다. 그들의 경우 정수 만 사용하는 프로그램은 다소 일할 기회가 아주 많습니다. 포인터는 훨씬 더 많은 원숭이와 더 많은 시간을 필요로합니다. 이 의미에서 그들은 더 어렵습니다. –