如何用字符数组跟字符指针实现函数strcat(s,
如何用字符数组跟字符指针实现函数strcat(s,t),返回字符串的首地址我刚学的c语言,对于指针跟数组都不是很熟悉 —— 希望高手指点!~
#include using namespace std; char* solve(char *s, char *t) { char* c = (char*)malloc(sizeof(s)+sizeof(t)+1); int i=0,j=0; for (i=0; s[i]!='\0'; i++) c[i] = s[i]; for (j=0; t[j]!='\0'; i++,j++) c[i] = t[j]; c[i] = '\0'; return c; } int main() { char s[] = "123"; char t[] = "45678"; char* x = solve(s,t); cout<
指针和数组是完全不一样的两个东西。数组是给一个连续空间取了一个名字而已,它在进行值传递的时候传的是首元素地址,所以很多人把它和指针混起来;指针则表示其指向了某个特定类型的空间。 例子1。 int a[2];printf("%d\t%d",sizeof(a)/sizeof(int),sizeof(a+1)/sizeof(int)); 第一个sizeof(a)计算出了数组a的空间长度为2;第二个sizeof(a+1)则是计算数组a的首地址+1所在元素空间的长度为1。
例子2。 用指针开辟二维数组需要: int **a; a=new int *[2]; //a指向指针数组 a[0]=new int [2];a[1]=new int[2];//为他们开辟空间 易错的地方: void f(int **t); 然后其他函数中 { int a[2][2]; f(a); }//错在a是数组,t是指向指针的指针,根本不是一个东西。
相信你懂得。
字符数组和字符指针是有区别的,例如 char *str1, str2[10]; printf("sizeof str1:%d, sizeof str2 %d\n", sizeof(str1), sizeof(str2)); 打印的结果是 sizeof str1:4, sizeof str2:10 str1 = str2;这个赋值语句是没有问题的,因为str1是变量 而str2 = str1;就会有问题,因为字符数组的数组名是一个常量(地址常量),不能赋值 至于实现strcat,下面给你一个经典的实现方法 char *strcat(char *dest, const char *src) { if (dest == NULL || src == NULL) return NULL; //这里出错不处理了 char *ptr = dest + strlen(dest); while (*ptr++ = *src++) ; //空语句 return dest; }。
在本质上讲,字符数组跟字符指针都是指针,可以统一处理
问:挺简单的一C函数,不过我是初学者,暂时还不会写,请好心人多多帮忙!
答:int mystrlen(char *str) { int n = 0; while (*str) { n++; str++;} return n; } voi...详情>>