Tôi nghĩ rằng nếu một con trỏ trỏ đến một mảng char được tăng lên thì nó sẽ trỏ đến phần tử tiếp theo trong mảng đó. Nhưng khi tôi thử điều này tôi thấy rằng tôi phải tăng nó hai lần. Đang thử tăng bằng sizeof (char) tôi thấy rằng việc thêm kích thước của một char là quá nhiều nên nó phải được chia cho hai.Tăng thêm con trỏ C
#include <stdio.h>
int main(int argc, char * argv[]){
char *pi;
int i;
pi = argv[1];
printf("%d args.\n",argc-1);
printf("input: ");
for(i=0;i<argc-1;i++){
printf("%c, ",*pi);
/*The line below increments pi by 1 char worth of bytes */
//pi+=sizeof(pi)/2;
/* An alternative to the above line is putting pi++ twice - why? */
pi++;
pi++;
}
printf("\n");
return 0;
}
Tôi có làm gì sai không? hoặc tôi hiểu lầm phương pháp tăng con trỏ?
Ví dụ mã đầu tiên của bạn không hợp lệ "& int_array" có loại "con trỏ tới mảng int" không tương thích với "con trỏ tới int", bạn cần sử dụng "& int_array [0]" hoặc chỉ "int_array" thay thế.Ngoài ra, sizeof (char) được định nghĩa * là 1 trong C, không có "có thể" về nó. –
Cảm ơn, Robert! Bạn nói đúng, tất nhiên; Tôi đã sửa bài đăng. – Avi