#include<stdio.h>
#include<string.h>
int main()
{
char * p = "abc";
char * p1 = "abc";
printf("%d %d", p, p1);
}
Run Code Online (Sandbox Code Playgroud)
当我打印两个指针的值时,它打印相同的地址.为什么?
为什么这段代码不起作用.只是试图检查用户输入是否与密码相同
char *pass;
printf("Write the password: ");
scanf("%s", pass); // Because is a pointer the & is out ?
if( strcmp( pass , "acopio") == 0)
Run Code Online (Sandbox Code Playgroud) 如果我们说:
char *p="name";
Run Code Online (Sandbox Code Playgroud)
那我们该怎么办呢
if(p=="name"){
printf("able"};//this if condition is true but why?
Run Code Online (Sandbox Code Playgroud)
因为"name"这里是一个字符串文字,并且p是一个保存字符串基址的指针,那么为什么上述语句工作正常?
我说有两个字符串(在这种情况下是字符串文字)
char *name = "Fotis";
char *second_name = "Fotis";
Run Code Online (Sandbox Code Playgroud)
我有两种方法可以比较它们,它们都给我一个准确的结果.第一个是使用相等运算符(==),同样:
if (name == second_name)
printf ("Great success!\n");
Run Code Online (Sandbox Code Playgroud)
第二个是通过以下strcmp功能string.h:
if (strcmp (name, second_name) == 0)
printf ("Great success!\n");
Run Code Online (Sandbox Code Playgroud)
我的问题是:两者中哪一个最有效率 idiomatic}比较C中两个字符串的方法?还有另一种更惯用的方式吗?
我想比较两个Char指针:
char * x;
char * y;
x = "Hesham";
y = "Hesham";
printf("%d %d \n", &x, &y);
if(x==y)
{
printf("=\n");
}
else
{
printf("!=\n");
}
Run Code Online (Sandbox Code Playgroud)
执行结果是:
2293368 2293360
=
Run Code Online (Sandbox Code Playgroud)
1 - 为什么两个指针有不同的收件人,操作==返回true?
2 -为什么编译存储字符串没有文字Hesham只有一次,并使用其地址两次x和y?