초보자 여기,주소에 데이터를 저장하고 C에서 변수의 주소를 변경 하시겠습니까?
구조체에 단어 (구조체에 내 질문과 관련없는 다른 기능이 있음)가 포함 된 단어 구조체가 있는데이 구조체를 단어 구조 포인터의 배열 인 hashmap. 내 프로그램에서, 새로운 단어를 볼 때마다 새로운 단어 구조체를 만들고 malloc char 배열을 만들어 그것을 만든다. 그러나 루프를 몇 번 실행하면 이전 단어가 다른 해시 맵 위치에 있더라도 새 단어로 바뀝니다.
내가 새로운 단어 구조체를 새로운 주소로 생성하는 루프를 가질 수 있다면 궁금한 점은 무엇입니까?
struct words add;
int b;
for(b = 0; b < strlen(LowerCaseCopy); b++)
{
add.word[b] = '\0';
}
for(b=0;b< strlen(LowerCaseCopy);b++)
{
add.word[b] = LowerCaseCopy[b];
}
hashmap[hashf] = &add;
이것은 문제의 코드입니다.
내 문제의 예 : 루프의 첫 번째 실행, 나는 특정 해시 맵 슬롯에 저장된 apple에 add.word를 설정했습니다. 루프의 다음 실행 단계에서 add.word를 오렌지색으로 설정하고 다른 슬롯에 저장합니다. 문제는 첫 번째 슬롯에서 더 이상 사과를 저장하지 않고 대신 오렌지색을 저장한다는 것입니다. 따라서 오렌지색을 저장하는 2 개의 슬롯이 있는데, 이는 내가 원하는 바가 아닙니다. 이 문제를 어떻게 해결할 수 있습니까?
어떻게'hashf '값을 얻습니까? 그것은 이제까지 변화 되었습니까? – Philip
'b
예, hashf가 변경되었습니다. 이것은 제 코드의 섹션 일 뿐이므로이 섹션이 루프에 있습니다. 루프의 각 반복에서 변수를 재사용하면 주소가 변경되지 않습니까? – Kevin