首页 > 代码库 > 关于数组和指针作为参数时遇到的问题
关于数组和指针作为参数时遇到的问题
自己在实现一个类strcpy函数时,发现一些小问题:
首先,函数如下:
char *str_n_cpy(char *dest,const char *src){ char *_temp = dest; assert(dest != NULL || src !=NULL); //注意越界 printf("%d",sizeof(dest)); while((*dest++ = *src++) != ‘\0‘); return _temp;
}
main函数如下:
int main(){ char *str1 = "123"; char *str2 = "4567"; printf("%s\n",str_n_cpy(str1,3,str2,3)); return 0;}
运行程序会发现程序崩溃,后来在main函数中把char *str1 = "123"改成char str1[3]={"123"};会发现程序就能正常运行,为什么会这样呢?
经查知,前者实际将str1指向一个常量”123“了,即此时的str1是一个常量指针,其中的内容固然不可改变,所以赋值操作不能进行了;而后者str1实际作为一个普通的char型指针传到函数中,自然可以进行赋值操作。
关于数组和指针作为参数时遇到的问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。