1
雖然我在做一個在線測驗(http://www.mycquiz.com/),我來到了這個問題:傳遞字符串地址作爲參數傳遞給指針指向CHAR函數
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void myfunc(char** param){
++param;
}
int main(){
char* string = (char*)malloc(64);
strcpy(string, "hello_World");
myfunc(&string);
printf("%s\n", string);
// ignore memory leak for sake of quiz
return 0;
我的第一個答案的選擇是該字符串會得到修改,沒有發生,我感到困惑,爲什麼不呢?他不是通過文字的地址嗎? 還有一串思想來到我這些情況會如何變化?
void myfunc(char* param){
++param;
}
int main(){
char* string = (char*)malloc(64);
strcpy(string, "hello_World");
myfunc(string);
void myfunc(char* param){
++param;
}
int main(){
char string[12];
strcpy(string, "hello_World");
myfunc(string);
他們沒有似乎真正改變傳遞的字符串。所以如果我確實需要修改字符串,我如何通過引用來傳遞它?
謝謝。
那麼爲什麼通過'string'或'&string'給出相同的結果呢?同時將'myfunc(char ** param)'改爲'myfunc(char * param)'具有相同的結果。這些副作用是? – 2014-08-28 18:15:33
我想你的意思是第一個是'void myfunc(char ** param)'。 – 2014-08-28 18:27:57
@RSahu不,我隨機更改了聲明,它得到了相同的結果。 – 2014-08-28 18:29:38