由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - C 语言,初学者,简单问题
相关主题
free(char *)的问题 (转载)数组问题
看下这个小程序怎么得到char *分配空间的大小?
Array in Cconst char *p, is it ok to change p[1] ?
A question about class sizechar s[]和char *ps的不同
为什么这个小程序错了?我也来个。某公司招初级C程序员的面试题。[转载]
请教怎么用#define实现如下的功能呼叫THRUST等C语言牛牛,菜鸟级C语言指针问题
大家看看这个简单的qsort排序的问题c的问题
再问一个free()的问题difference between: char** p and char*p[] ??
相关话题的讨论汇总
话题: test话题: printf话题: sizeof话题: size
进入Programming版参与讨论
1 (共1页)
r*****8
发帖数: 2560
1
问题1. 为什么 sizeof(test))总是显示8?
问题2. *test 的大小从12变到36字母没问题吗?
#include
#include
void main(void)
{
char *test = "abcdefghijk";
printf("Size of test is %li \n", sizeof(test));
// 结果显示:8,应该是12啊,怎么会是8?
printf("The string test is %s \n", test);
// 结果打印出 "abcdefghijk"
test = "abcdefghijk abcdefghijk abcdefghijk";
printf("Size of test is %li \n", sizeof(test));
// 结果显示还是8,应该是36啊,怎么会是8?
printf("The string test is %s \n", test);
// 结果打印出"abcdefghijk abcdefghijk abcdefghijk"
return 0;
}
谢谢!
b*******s
发帖数: 5216
2
test is a 64-bit pointer
d****i
发帖数: 4809
3
When you use the following:
char *test = "abcdefghijk";
test is a pointer to a constant string literal, so it is of pointer type. I
guess you are on a 64-bit machine, therefore you got 8 bytes.
Change it to
char test[] = "abcdefghijk";
And then test again, you'll see difference.

【在 r*****8 的大作中提到】
: 问题1. 为什么 sizeof(test))总是显示8?
: 问题2. *test 的大小从12变到36字母没问题吗?
: #include
: #include
: void main(void)
: {
: char *test = "abcdefghijk";
: printf("Size of test is %li \n", sizeof(test));
: // 结果显示:8,应该是12啊,怎么会是8?
: printf("The string test is %s \n", test);

r*****8
发帖数: 2560
4
“I guess you are on a 64-bit machine, ”
对啊,你太牛了。我的运行平台是一个64-bit的PC机,装了Virtual Box,然后装了乌
邦土。
“therefore you got 8 bytes.”
8 bytes 怎么能装得下那么多字母呢?还不出错。

I

【在 d****i 的大作中提到】
: When you use the following:
: char *test = "abcdefghijk";
: test is a pointer to a constant string literal, so it is of pointer type. I
: guess you are on a 64-bit machine, therefore you got 8 bytes.
: Change it to
: char test[] = "abcdefghijk";
: And then test again, you'll see difference.

r*****8
发帖数: 2560
5
64-bit 就是 8 bytes.
8 bytes 怎么能装得下那么多字母呢?还不出错。

【在 b*******s 的大作中提到】
: test is a 64-bit pointer
r*****8
发帖数: 2560
6
搞清楚了一部分sizeof()如果是指一个Pointer,总是同一大小8。
那么如何知道char *test = "abcdefghij"; 里面总共有多少个字符呢?
c******e
发帖数: 545
7
strlen

【在 r*****8 的大作中提到】
: 搞清楚了一部分sizeof()如果是指一个Pointer,总是同一大小8。
: 那么如何知道char *test = "abcdefghij"; 里面总共有多少个字符呢?

r*****8
发帖数: 2560
8
非常感谢!

【在 c******e 的大作中提到】
: strlen
S*A
发帖数: 7142
9
sizeof 返回的是 变量类型的大小。
指针变量大小在同一个platform 就是native int 的大小。
64 位机器是 8.
你问题的是指针指向的 string 的大小,那个用 strlen。

【在 r*****8 的大作中提到】
: 搞清楚了一部分sizeof()如果是指一个Pointer,总是同一大小8。
: 那么如何知道char *test = "abcdefghij"; 里面总共有多少个字符呢?

a*****g
发帖数: 19398
10
对头

【在 b*******s 的大作中提到】
: test is a 64-bit pointer
1 (共1页)
进入Programming版参与讨论
相关主题
difference between: char** p and char*p[] ??为什么这个小程序错了?
关于 big/little endian,为什么对char 有影响?请教怎么用#define实现如下的功能
在帮忙看看这个吧 C: int->char*大家看看这个简单的qsort排序的问题
C++ formatted output question再问一个free()的问题
free(char *)的问题 (转载)数组问题
看下这个小程序怎么得到char *分配空间的大小?
Array in Cconst char *p, is it ok to change p[1] ?
A question about class sizechar s[]和char *ps的不同
相关话题的讨论汇总
话题: test话题: printf话题: sizeof话题: size