char *gets_s( char *str );
char *gets_s( char *str, rsize_t n );
Cho em hỏi câu lệnh khai báo hàm này là con trỏ hàm hay là gì ạ? Hàm này sẽ trả về kiểu char hay là địa chỉ của biến kiểu char ?
char *gets_s( char *str );
char *gets_s( char *str, rsize_t n );
Cho em hỏi câu lệnh khai báo hàm này là con trỏ hàm hay là gì ạ? Hàm này sẽ trả về kiểu char hay là địa chỉ của biến kiểu char ?
Kiểu char*
→ hàm con trỏ.
vậy hàm con trỏ sẽ trả về giá trị j ạ ?
nó làm hàm bình thường thôi :V Kiểu trả về là con trỏ tới char
ví dụ:
char * str_cpy(char* dst, char* str) {
while (*str)
{
*dst++ = *str++;
}
*dst++ = '\0';
return dst;
}
int main()
{
const int size = 50;
char str[size] = "helloWorld";
char buff[size];
str_cpy(buff, str);
printf("buff: %s\n",buff);
}
thì kiểu trả về là con trỏ (char) trỏ tới buff có nghĩa là trỏ tới địa chỉ kí tự đầu tiên của buff đúng không bạn ?
ừ @_@
mà địa chỉ của ký tự đầu tiên của buff hay địa chỉ của buff nha, địa chỉ đầu tiên của buff là cái gì @_@
Bạn suy nghĩ đơn giản thôi. char*
là một kiểu dữ liệu. int*
là một kiểu dữ liệu khác.
Cách bạn gọi hàm thì là ép kiểu char[]
thành char*
thôi, giống như hàm có tham số kiểu long
hay double
thì bạn truyền biến kiểu int
vào được ấy.
Còn kết quả trả về của hàm này không quan trọng, bạn đâu có dùng để gán đâu. Hàm đó return cái gì cũng được, không nhất thiết phải là char*