E*****7 发帖数: 128 | 1 Four C++ interview questions (1), (2), (3) and (4) below:
char p[ ] = "C++ Interview Questions";
p[0] = "D"; // OK
char* p = "Shit C++ Interview Questions";
p[0] = "C"; // Error:(1) Why?
(2) What are the differences between char p[ ] and char* p? (3) When must
char p[ ] be used? (4) When must char* p be used? |
T*****9 发帖数: 2484 | 2
p指向的字符串是常量
【在 E*****7 的大作中提到】 : Four C++ interview questions (1), (2), (3) and (4) below: : char p[ ] = "C++ Interview Questions"; : p[0] = "D"; // OK : char* p = "Shit C++ Interview Questions"; : p[0] = "C"; // Error:(1) Why? : (2) What are the differences between char p[ ] and char* p? (3) When must : char p[ ] be used? (4) When must char* p be used?
|
c**a 发帖数: 316 | 3 co-ask.
【在 E*****7 的大作中提到】 : Four C++ interview questions (1), (2), (3) and (4) below: : char p[ ] = "C++ Interview Questions"; : p[0] = "D"; // OK : char* p = "Shit C++ Interview Questions"; : p[0] = "C"; // Error:(1) Why? : (2) What are the differences between char p[ ] and char* p? (3) When must : char p[ ] be used? (4) When must char* p be used?
|
c**a 发帖数: 316 | 4 p-> data segment,
char a[] -> stack.
我理解是。
data segment 有常量区间不能改。。。
【在 T*****9 的大作中提到】 : : p指向的字符串是常量
|
T*****9 发帖数: 2484 | 5 C++有只读字符串池的
char *a = "hello";
char *b = "hello";
a和b指向的是同一个字符串,对于char *来说,对于C是合理的,对于C++,已经是被标
准认为不该存在当前的C++程序里面了,只是为了保证和C的兼容才有的,应该用的是
const char*,对于char *的修改是未定义行为
char a[]只是一个数组,
【在 c**a 的大作中提到】 : p-> data segment, : char a[] -> stack. : 我理解是。 : data segment 有常量区间不能改。。。
|
E*****7 发帖数: 128 | 6 char *a = "hello";
char *b = "hello";
or
const char *a = "hello";
const char *b = "hello";
a和b指向的是同一个字符串: Not 100% true
if (a == b) // not 100% holds (true)
do sth.
The test result is implementation-defined. The address holding the above four
"hello" strings may or may not be identical.
【在 T*****9 的大作中提到】 : C++有只读字符串池的 : char *a = "hello"; : char *b = "hello"; : a和b指向的是同一个字符串,对于char *来说,对于C是合理的,对于C++,已经是被标 : 准认为不该存在当前的C++程序里面了,只是为了保证和C的兼容才有的,应该用的是 : const char*,对于char *的修改是未定义行为 : char a[]只是一个数组,
|
T*****9 发帖数: 2484 | 7 我的意思是有只读字符串池,相同的可能性比较大
C++和C都没有承认a == b来判断不是一个很stupid的事情
four
【在 E*****7 的大作中提到】 : char *a = "hello"; : char *b = "hello"; : or : const char *a = "hello"; : const char *b = "hello"; : a和b指向的是同一个字符串: Not 100% true : if (a == b) // not 100% holds (true) : do sth. : The test result is implementation-defined. The address holding the above four : "hello" strings may or may not be identical.
|
w***g 发帖数: 5958 | 8
这个其实是定义数组的偷懒的做法,长度为字符串长度,数组被初始化为字符串。之后
数组想怎么改都行。
我一般不这么写程序。特别是C++,应该用string("C++ Interview Questions")。
【在 E*****7 的大作中提到】 : Four C++ interview questions (1), (2), (3) and (4) below: : char p[ ] = "C++ Interview Questions"; : p[0] = "D"; // OK : char* p = "Shit C++ Interview Questions"; : p[0] = "C"; // Error:(1) Why? : (2) What are the differences between char p[ ] and char* p? (3) When must : char p[ ] be used? (4) When must char* p be used?
|
t****t 发帖数: 6806 | |
c********t 发帖数: 27 | 10 p[0] = "C"; // is string, will pad a \0 at end
//then
p[0] = 'C'; // is okay |
|
|
E*V 发帖数: 17544 | 11 I think for C language,
it is OK
for C++, it is not ba?
【在 c********t 的大作中提到】 : p[0] = "C"; // is string, will pad a \0 at end : //then : p[0] = 'C'; // is okay
|
z***e 发帖数: 5393 | 12 实际上, char[]/int[]/etc.算是一种struct,char a[]="aadfasdfas",相当于调用了
ctor()----虽然C里面没这个概念,但是实现却是一样的。
C一共有两种aggregation type,一种是struct,另一种就是[].
欧年初在vmware interview的时候就死在这个上面了。 |
t****t 发帖数: 6806 | 13 C FAQ没看全就面试C?
怎么好意思说啊.
【在 z***e 的大作中提到】 : 实际上, char[]/int[]/etc.算是一种struct,char a[]="aadfasdfas",相当于调用了 : ctor()----虽然C里面没这个概念,但是实现却是一样的。 : C一共有两种aggregation type,一种是struct,另一种就是[]. : 欧年初在vmware interview的时候就死在这个上面了。
|
T*****9 发帖数: 2484 | 14 vmware 。。。大牛啊!
【在 z***e 的大作中提到】 : 实际上, char[]/int[]/etc.算是一种struct,char a[]="aadfasdfas",相当于调用了 : ctor()----虽然C里面没这个概念,但是实现却是一样的。 : C一共有两种aggregation type,一种是struct,另一种就是[]. : 欧年初在vmware interview的时候就死在这个上面了。
|
T*****9 发帖数: 2484 | 15 C好难啊。。。
每次写C我就他妈的想杀人
用了
【在 t****t 的大作中提到】 : C FAQ没看全就面试C? : 怎么好意思说啊.
|
t****t 发帖数: 6806 | 16 我怎么觉得最简单的就是C了, 多straight forward啊
一堆函数互相调用而已
【在 T*****9 的大作中提到】 : C好难啊。。。 : 每次写C我就他妈的想杀人 : : 用了
|
k****f 发帖数: 3794 | 17 nodnod
看c++那么多构造析构的破规矩
真是麻烦的很。
【在 t****t 的大作中提到】 : 我怎么觉得最简单的就是C了, 多straight forward啊 : 一堆函数互相调用而已
|
T*****9 发帖数: 2484 | 18 指针。。。
【在 t****t 的大作中提到】 : 我怎么觉得最简单的就是C了, 多straight forward啊 : 一堆函数互相调用而已
|
a**********s 发帖数: 588 | 19 看见这种题目就很生气, 在实践中根本不会用到... |
t****t 发帖数: 6806 | 20 在C FAQ里出现过的东西, 你怎么敢说实践中根本不会用到, 明显是经常被用到
【在 a**********s 的大作中提到】 : 看见这种题目就很生气, 在实践中根本不会用到...
|
|
|
l*****d 发帖数: 359 | 21 char* p = "Shit C++ Interview Questions";
p is pointing to string constants, and the result is un-defined if you try
to modify the string contents. (from c programing language by K&R)
【在 E*****7 的大作中提到】 : Four C++ interview questions (1), (2), (3) and (4) below: : char p[ ] = "C++ Interview Questions"; : p[0] = "D"; // OK : char* p = "Shit C++ Interview Questions"; : p[0] = "C"; // Error:(1) Why? : (2) What are the differences between char p[ ] and char* p? (3) When must : char p[ ] be used? (4) When must char* p be used?
|
a**********s 发帖数: 588 | 22 C FAQ怎么就是bible了,出现过的东西就经常被用到吗?从来不觉得什么时候非得用
char* str = "blah blahh..."之类的东西,而且在前面不加上const就不是好习惯。
【在 t****t 的大作中提到】 : 在C FAQ里出现过的东西, 你怎么敢说实践中根本不会用到, 明显是经常被用到
|
s****n 发帖数: 786 | 23 这是比较基初的知识,Google一下水滴石穿系列对这个讲的比较全,其实地址类型数据
应该显式定义,我嚼得应该这样子
addr32 p1,p2;
初学者就不会迷糊,回到你的问题,array和pointer的区别很简单了
【在 E*****7 的大作中提到】 : Four C++ interview questions (1), (2), (3) and (4) below: : char p[ ] = "C++ Interview Questions"; : p[0] = "D"; // OK : char* p = "Shit C++ Interview Questions"; : p[0] = "C"; // Error:(1) Why? : (2) What are the differences between char p[ ] and char* p? (3) When must : char p[ ] be used? (4) When must char* p be used?
|
v****s 发帖数: 1112 | 24 hou guo hen yanzhong.
【在 a**********s 的大作中提到】 : 看见这种题目就很生气, 在实践中根本不会用到...
|
z***e 发帖数: 5393 | 25 老大教训得是。
当时对方第7个(最后一个)比较白的印度少女写出 char a[]="adfsadfsaf";a[1]='c'
;我就激动地说会exception啦;然后对方轻蔑地说你在跟老子胡说什么?偶便满头大汗
晕菜了...
【在 t****t 的大作中提到】 : C FAQ没看全就面试C? : 怎么好意思说啊.
|
l*****d 发帖数: 359 | 26 haha
c'
【在 z***e 的大作中提到】 : 老大教训得是。 : 当时对方第7个(最后一个)比较白的印度少女写出 char a[]="adfsadfsaf";a[1]='c' : ;我就激动地说会exception啦;然后对方轻蔑地说你在跟老子胡说什么?偶便满头大汗 : 晕菜了...
|