c中的指针(初学者)
|
我刚刚开始研究C,它来自Java背景。我很难把头缠在指针上。从理论上讲,我感觉很明白,但是当我尝试使用它们或遵循使用它们的程序时,我很快就会迷路。我试图遵循字符串concat练习,但是它没有用,所以我将其简化为一些基本的指针练习。它符合strcat函数的警告冲突类型,当我运行它时,完全崩溃。
谢谢你的帮助
#include <stdio.h>
#include <stdlib.h>
/* strcat: concatenate t to end of s; s must be big enough */
void strcat(char *string, char *attach);
int main(){
char one[10]=\"test\";
char two[10]=\"co\";
char *s;
char *t;
s=one;
t=two;
strcat(s,t);
}
void strcat(char *s, char *t) {
printf(\"%s\",*s);
}
没有找到相关结果
已邀请:
5 个回复
乏摩纶誊伟
应该看起来像这样:
星号是不必要的。 “ 3”格式参数表示该参数应为“ 4”,即“ 5”是什么。用
前缀
会导致额外的无效间接寻址。 您将收到有关类型冲突的警告,因为
是标准库例程,应具有以下签名:
您的退货类型不同。您可能应该将您的名称重命名为
或其他名称,以避免与标准库发生冲突(如果使用相同的名称,则可能会出现链接器错误)。
撵穆
至
原因是printf期望将
的替换内容作为指针。它将在内部取消引用以获取值。 因为您将
声明为
指针(
),所以函数中
的类型就是指向
的指针。因此,您只需将该指针直接传递到
中即可。
车料
顺便说一句,strcat是一个标准函数,它返回一个指向字符数组的指针。为什么要自己做?
贸会
替换为
还不会追加字符串,这是完全有效的代码: 注意功能
瞥同忙接
在下面的代码中,您将看到一个int \'a \'和一个指针\'b \'。 此处b被视为整数的指针,并在其前给\'\'进行声明。\'\'声明\'b \'是指针。那么您将看到\“ b =&a \”。这意味着b正在使用整数\“ a \”的地址,该地址在该特定内存中保持值10,而printf正在打印该值。