Cách sử dụng con trỏ trong C

Mọi người cho em hỏi tại sao em khai báo 2 con trỏ khác nhau nhưng khi sử dụng lần thứ 2 thì con trỏ 1 cũng bị thay đổi theo con trỏ 2 ạ?

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdint.h>
char *str1;
char *str2;
char *str = (char*)"Onesomething";
char resultString[50];
char *subString(char *str, unsigned char soure_char, unsigned char destination_char)
{
	unsigned int i, j, k =0;
	unsigned char lenghthSrc = 0, lengthDes = 0;
	for(i = 0; str[i] != soure_char; i++)
	{
		lenghthSrc++;
	}
	for(j = 0; str[j]  != destination_char; j++)
		lengthDes++;
	memset(resultString, 0 , sizeof(resultString)); 
	for(k = 0; k < lengthDes - lenghthSrc-3; k++)
	{
		resultString[k] = str[lenghthSrc + k + 2];
	}
	resultString[k + 1] = '\0';
 //   printf("%s\n", resultString);
	return resultString;
}
int main()
{
    str1 = subString(str,'O', 'g');
    printf("str1 = %s\n", str1);
    str2 = subString(str,'n','i');
    printf("str1 = %s\n", str2);
    printf("str2 = %s\n", str1);
}

Tên biến của 2 con trỏ là gì ?

2 Likes

str1 và str2 ạ em có khai báo bên trên ạ

bạn cho char resultString[50]; vào trong hàm substring là dc,
str1 và str2 đều đang trỏ vào resultString[] kìa

1 Like

Nhưng em tưởng rằng mỗi con trỏ sẽ có 1 địa chỉ vị trí khác của resultString thì nó khác nhau ạ

ý b là str1 và str2 có địa chỉ khác nhau ?

Dạ đúng ạ, ý em nó đang trỏ tới địa chỉ khác nhau

Tại sao b lại nghĩ rằng nó trỏ tới địa chỉ khác nhau, đoạn code nào ?

1 Like

ak ôi em nhầm, em hiểu r ạ nó đều đang trỏ tới resultString, thanks anh ạ :v

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