相关疑难解决方法(0)

两个字符串指向不同字符串文字的地址是相同的

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

当我打印两个指针的值时,它打印相同的地址.为什么?

c pointers literals

80
推荐指数
4
解决办法
6126
查看次数

strcmp指针不能在C中工​​作

为什么这段代码不起作用.只是试图检查用户输入是否与密码相同

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)

c pointers strcmp

6
推荐指数
2
解决办法
1万
查看次数

为什么字符串文字与指针相当?

如果我们说:

 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是一个保存字符串基址的指针,那么为什么上述语句工作正常?

c string-literals

6
推荐指数
1
解决办法
134
查看次数

在C中比较两个字符串是否相同的最佳方法是什么?

我说有两个字符串(在这种情况下是字符串文字)

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中两个字符串的方法?还有另一种更惯用的方式吗?

c string string-comparison

1
推荐指数
1
解决办法
1233
查看次数

比较Char指针

我想比较两个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只有一次,并使用其地址两次xy

c c++ pointers equality char

0
推荐指数
1
解决办法
3562
查看次数