汉扬编程 编程大纲 如何用字符数组跟字符指针实现函数strcat(s,

如何用字符数组跟字符指针实现函数strcat(s,

#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;

}。
  

在本质上讲,字符数组跟字符指针都是指针,可以统一处理

本文来自网络,不代表汉扬编程立场,转载请注明出处:http://www.hyzlch.com/mianfei/5929.html

C语言如何实现删除字符串中的字符

用C语言编程,求三角形面积的函数知道

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部