将指针的内容复制到另一个

时间:2013-03-08 04:15:36

标签: c

#include<stdio.h>
#include<malloc.h>
void my_strcpy(char *sour,char *dest){
 if(sour == NULL || dest == NULL){
  return;
 }
 dest = sour;
}
int main(){
 char *d = NULL;
 char *s = "Angus Declan R";
 //d = malloc(sizeof(strlen(s)+1));
 //my_strcpy(s,d);
 d = s;
 printf("\n %s \n",d);
 return 0;
}

在这里我试图使指针“d”指向“s”所指向的位置。为什么它没有指向该位置。

3 个答案:

答案 0 :(得分:3)

C是一种按值传递的语言。 C FAQ的This question可以回答您的问题。请注意,即使您修复了函数原型,您的算法也不会复制字符串 - 只是一个指针。您可以使用以下命令替换该呼叫:

d = s;

main功能中。 malloc也是不必要的 - 你只是泄漏它。

答案 1 :(得分:2)

这是因为c语言是按值传递的。而是传递指针的地址。

void my_strcpy(char *sour,char **dest)
// Condition checking and then do -
    *dest = sour ;

答案 2 :(得分:1)

这里* d和* s是两个指针你只是复制存储在s指针中的地址,该指针指向一个数组并且数组包含“Angus Declan R”, d不能指向地址

当你声明/定义像

int * s =“Angus Declan R”; ---&GT;最初在代码段(它是只读区域)中创建一个数组,s现在指向该数组的基地址。即使你不能使用* s.u直接访问字符串,也只能使用地址打印/访问。

唯一的原因是在内存的代码段区域中创建了数组。

这里%s通过使用基地址打印值/字符串/ char,直到遇到空值。 malloc是不必要的, in void my_strcpy()dest = sour;也没必要。它就像d = s;

如果解释不好,请原谅。