由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 菜鸟问个C++的pointer问题
相关主题
面试面试官错了怎么办?C++ Q58: size of pointer (Bloomberg)
C++ Q93 - Q95一般电面C++会问到什么专业问题?
一道 C++ 的题。Windows下多个DLL之间memory allocation问题 (转载)
C++相关的面经问几个面试题
问一个C的简单问题C++ Q78: about sizeof
再问一个C的malloc( )C++ Q90 - Q92
bloomberg新鲜面经请教一个 c++ member function pointer 问题
求指点一下我写的程序哪部分是C++ syntax大家新年好。 请教一个 c interview question (转载)
相关话题的讨论汇总
话题: newelem话题: head话题: element话题: pointer话题: int
进入JobHunting版参与讨论
1 (共1页)
r***h
发帖数: 70
1
在看Programming interview exposed
不太明白里面讲link list插入新head的程序的例子.给出2个例子,书上说第一个是错的
,第二个才对.不明白为什么必须用**head而不是*head,难道head本身做为pointer pass
给函数不改变指针的内容吗? 请帮忙讲解一下,谢谢!
For example, the following code is incorrect because it fails to update the
head pointer in the calling function:
int BadInsert(element *head)
{
element *newElem;
newElem = (element *) malloc(sizeof(element));
if (!newElem) return 0;
newElem->next = head;
head = newElem;
return 1;
}
The correct way to update the head pointer in C is to pass a pointer to the
head pointer, allowing you to modify the calling function's pointer to the
first element, as shown here:
int Insert(element **head) {
element *newElem;
newElem = (element *) malloc(sizeof(element));
if (!newElem) return 0;
newElem->next = *head;
*head = newElem;
return 1;
}
j*a
发帖数: 14423
2
int swap(int *a, int *b)
int main() {
int x, y;
swap(&x, &y);
}

pass
the

【在 r***h 的大作中提到】
: 在看Programming interview exposed
: 不太明白里面讲link list插入新head的程序的例子.给出2个例子,书上说第一个是错的
: ,第二个才对.不明白为什么必须用**head而不是*head,难道head本身做为pointer pass
: 给函数不改变指针的内容吗? 请帮忙讲解一下,谢谢!
: For example, the following code is incorrect because it fails to update the
: head pointer in the calling function:
: int BadInsert(element *head)
: {
: element *newElem;
: newElem = (element *) malloc(sizeof(element));

r***h
发帖数: 70
3
那个function按引用传递指针的看的懂.
但问题是为啥head必须用2个*,我按下面这么理解吗?
element **head = some_value;
BadInsert(*head);
Insert(head);

【在 j*a 的大作中提到】
: int swap(int *a, int *b)
: int main() {
: int x, y;
: swap(&x, &y);
: }
:
: pass
: the

a**h
发帖数: 2150
4
如果第一段function正确,调用格式应该是badinsert(&head),第一段function修改的是
原来head本身内容,而不是new head

【在 r***h 的大作中提到】
: 那个function按引用传递指针的看的懂.
: 但问题是为啥head必须用2个*,我按下面这么理解吗?
: element **head = some_value;
: BadInsert(*head);
: Insert(head);

1 (共1页)
进入JobHunting版参与讨论
相关主题
大家新年好。 请教一个 c interview question (转载)问一个C的简单问题
问一个placement new 和 operator new的问题再问一个C的malloc( )
bloomberg电面bloomberg新鲜面经
bloomberg onsite求指点一下我写的程序哪部分是C++ syntax
面试面试官错了怎么办?C++ Q58: size of pointer (Bloomberg)
C++ Q93 - Q95一般电面C++会问到什么专业问题?
一道 C++ 的题。Windows下多个DLL之间memory allocation问题 (转载)
C++相关的面经问几个面试题
相关话题的讨论汇总
话题: newelem话题: head话题: element话题: pointer话题: int