방명록을 남겨주세요!
-
-
김슬기
2011/07/31 02:35
Modify/Delete
Reply
뇌를 자극하는 알고리즘 내용중에 질문이 있습니다.
sizeof 연산자가 왜 함수 안에서는 제대로 작동을 안하는지 알고 싶습니다.
아래코드에서 sizeof(Data)라는 똑같은 연산자가 main함수안에서는 Data의 전체값을 return하는데
BubbleSort함수안에서는 sizeof(Data)연산자가 Data의 Element의 크기를 리턴하고 있네요.
왜 이런 현상이 발생하는지 설명 부탁드릴꼐요 ^^
#include <stdio.h>
void BubbleSort(int Data[], int Len)
{
int Limit;
int Count;
int i;
printf("BubbleSort => Data size : %d, Data[0] size : %d \n", sizeof Data, sizeof Data[0]);
for(Limit = Len - 1; Limit >= 1; Limit--)
{
for(Count = 0; Count < Limit; Count++)
{
if(Data[Count] <= Data[Count+1])
continue;
else
{
// printf("swapping %d with %d\n", Data[Count], Data[Count+1]);
int Temp = Data[Count];
Data[Count] = Data[Count + 1];
Data[Count + 1] = Temp;
}
}
}
}
int main (void)
{
int Data[] = {6, 4, 2, 3, 1, 5};
int Len = sizeof(Data)/sizeof(Data[0]);
printf("Main => Data size : %d, Data[0] size : %d \n", sizeof Data, sizeof Data[0]);
BubbleSort(Data, Len);
int i = 0;
for(i=0; i < sizeof(Data)/sizeof(Data[0]); i++)
{
printf("%d ", Data[i]);
}
printf("\n"
;
scanf("%c"
;
return 0;
}-
seanlab
2011/09/29 07:01
Modify/Delete
매개 변수로 넘기는 int 배열은 int *로 취급합니다. BubbleSort 안에서 호출하는 sizeof가 Data Element의 크기를 반환하는 것이 아니라 포인터의 크기를 반환하는 것입니다.
-
-
박성민 2011/07/15 17:13 Modify/Delete Reply
안녕하세요. 제 블로그에 와주셨길래 (^^
저도 한번 들러봤는데
C# 책도 준비중이신가봐요~ 기대하겠습니다! -
친구
2011/04/07 20:28
Modify/Delete
Reply
안녕하세요? 비주얼 C++ 2005 프로그래밍 교재를 사서 공부하는 학생입니다
다름이아니라 대림홈페이지에는 각 챕터 본문의 예제소스가 있는건 봤는데
각 챕터별 연습문제 풀이및해답이 없더군요.. 그래서 말인데요
연습문제의 풀이및해답 편을 받을수 있는 방법이 없을까요?-
seanlab
2011/09/29 07:02
Modify/Delete
네, 저는 집필한 서적에 대해 연습문제 해답을 제공하지 않습니다.
독자분들 스스로 고민하는 시간을 더 많이 갖게 해드리기 위해서입니다.
양해 부탁드립니다. :D
-
-
frrr 2010/10/12 15:23 Modify/Delete Reply
앗! 죄송합니다. 찾았어요! http://www.daerim.net/ - 고객센터 - 소스자료실에 있었군요! 아무튼 열심히 공부하겠습니다.
-
frrr 2010/10/12 15:20 Modify/Delete Reply
안녕하세요. VC++ 2005 프로그래밍 서적을 구입한 사람입니다. 사실 구매한지는 오래됐는데 처음에 사놓고 조금 본 다음에 손을 놨었어요. 이해가 안되서 너무 힘들더라구요. 특히 포인터랑, 클래스 부분... 근데 이거 저만 그런건 아니죠? -_-;;;
아무튼... 그러다가 최근 다시 보기 시작했는데 부록 CD가 원래 없었는지 잃어버렸는지 모르겠네요. 대림 홈페이지에서도 제공하지 않던데요? 예제 소스 받을 수 있는 방법이 없을까요? -
현민 2010/09/02 17:24 Modify/Delete Reply
책으로 공부하고 있는데요, 질문 좀 드리려구요. ado.net 부분에서 수정부분에 대해서 질문인데요. 책 소스 부분을 넣어서 프로그램을 만들고 있는데요.
try
{
ds = new DataSet();
adapter = new SqlDataAdapter("select * from t_books", sCon);
dt = ds.Tables["t_books"];
DataColumn[] PrimaryKey = new DataColumn[1];
PrimaryKey[0] = dt.Columns["book_code"];
dt.PrimaryKey = PrimaryKey;
DataRow row = dt.Rows.Find(SelectedKeyValue);
row.BeginEdit();
row["book_code"] = txt_code.Text;
row["book_nm"] = txt_nm.Text;
row["book_buyer"] = txt_buyer.Text;
row["enter_date"] = txt_datetime.Text;
row["book_buydate"] = txt_buydate.Text;
row["book_price"] = txt_price.Text;
row["book_company"] = txt_company.Text;
row.EndEdit();
DataSet UpdatedSet = ds.GetChanges(DataRowState.Modified);
if (UpdatedSet.HasErrors)
{
MessageBox.Show("문제"
;
}
else
{
adapter.Update(UpdatedSet, "t_books"
;
ds.AcceptChanges();
MessageBox.Show("수정됨"
;
}
}
catch
{
}
//catch (DataException DE)
//{
// MessageBox.Show(DE.Message);
//}
//catch (Exception DE)
//{
// MessageBox.Show(DE.Message);
//}
sql server08과 ado.net 이용인데요. 지금 상태로 하면 에러는 없지만
text박스나 or datagrid 로 하면 수정이 안되는데요.
catch{}을 지우고, 주석문 처리된 예외 상황이 들어간 catch문을 살리면
메시지로
"개체 참조가 개체의 인스턴스로 설정되지 않았습니다." 라고 뜨는데요
이유가 뭘까요 ㅠㅠㅠㅠㅠ -
ㄴㄴ
2010/08/27 19:03
Modify/Delete
Reply
http://cafe.naver.com/seanbook
뇌자알 카페 만들었는데.. 회원도 없고..
저자님 와주세요 굽신.. -
v광땡이
2010/07/13 10:59
Modify/Delete
Reply
안녕하세요 ^^ 예전에 뉴그리드에 같이 있었던 ~ 황성정 입니다.~! ㅋ
잘 지내세요?? ㅎㅎ
VC++6.0 만 쓰다 VC2005 책을 구입혀려고 찾다가 우연히 구입을 하게 되었는데 지은이를 보니 반갑더라구요 ^^
오늘 하루 즐거운 하루 되세요^^
