Con trỏ hàm hay hàm con trỏ?

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ỏ.

1 Like

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

3 Likes

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ì @_@

4 Likes

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*

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