【发布时间】:2016-08-26 14:15:29
【问题描述】:
我有一个问题,我知道以下实现可以正常工作:
void editMessage(char* message , int sizeOfMessage){
char newMessage[] = "modified";
printf("size of message is %lu \n",sizeof(message));
printf("size of new message is %lu \n",sizeof(newMessage));
if (sizeof(newMessage) <= sizeOfMessage) {
for (int i=0 ; i < sizeof(newMessage); i++) {
message[i] = newMessage[i];
}
} else {
printf("size of new message is too big\n");
}
}
int main() {
char randMessage[] = "original message";
editMessage(randMessage,sizeof(randMessage));
printf("the value of randMessage after function call is %s \n",randMessage);
return 0;
}
但是如果我想在不传递指针大小的情况下更改函数中的字符串值,有可能吗?如果是,如何?如果不是,为什么不呢?
我的意思是我想改变上面的 editMessage 函数是这样的:
void editMessage(char* message){
char newMessage[] = "modified";
printf("size of message is %lu \n",sizeof(message));
printf("size of new message is %lu \n",sizeof(newMessage));
if (sizeof(newMessage) <= sizeOf(message)) {
for (int i=0 ; i < sizeOf(message); i++) {
message[i] = newMessage[i];
}
} else {
printf("size of new message is too big\n");
}
}
和这样的主调用
editMessage(randMessage);
为什么这不起作用,请详细解释一下,然后我会接受他的回复吗? 谢谢!
【问题讨论】:
-
sizeof(message)是指针的大小,而不是它指向的对象的大小。 -
使用
strlen获取字符串的长度。 -
@user3001566 至少你展示的第一个函数是不正确的,没有意义。:)
标签: c string function char sizeof