Dạ chào mọi người.
Em là Học .
lần trước em có hỏi về con trỏ và cách lấy địa chỉ cũng như là trường hơp đặc biệt của phần tử đầu hôm nay em tự code 1 đoạn code là có chỗ khá khó hiểu . Mong mọi người giúp đỡ em .
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 10
char* sosanh(char *x,char *y)
{
printf("\nGia Tri Tai o nho x %s",x);
printf("\nDia Chi Cua x %p",&x);
printf("\nMien Gia Tri Cua str1 ma x dang o do: %p ",x);
if( strcmp(x,y) > 0 )
{
return x;
}
return y;
}
void main()
{
char str1[MAX];
char str2[MAX];
char *temp;
printf("Nhap Chuoi Str1: ");
gets(str1);
printf("Nhap Chuoi Str2: ");
gets(str2);
printf("\nDia Chi Cua str1 %p",str1);
printf("\nDia Chi Cua str1 %p",&str1[0]);
// Ta So Sanh 2 Chuoi
temp = sosanh(str1,str2);
strupr(temp);
printf("\n");
puts(temp);
printf("\n");
puts(str1);
printf("\n");
puts(str2);
getch();
}
- Vấn đề em muốn hỏi ở đây là .
printf("\nGia Tri Tai o nho x %s",x); // (1)
Nếu ta ghi thế này nó sẽ xuất cả chuỗi luôn mặc dù theo bản thân em nghĩ rằng nó đang truy đến địa chỉ x[0]; nhưng nó lại xuất hết.
và sau đó, em đổi lại
printf("\nGia Tri Tai o nho x %c",x); // (2)
Nó liền xuất hiện 1 cái ký tự không phải trong str1 và str2 ?
printf("\nGia Tri Tai o nho x %c",x[0]); // (3)
Thì đúng là nó chỉ xuất 1 phần tử *x[0].
Mong mọi người giúp em hiểu hơn về con trỏ.
Cảm ơn mọi người đã đọc topic của em.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?