可以有两个指针指向相同的字符串吗?

时间:2016-04-06 14:50:49

标签: c

char *str = "hello";

在这样的代码中,我可以制作另一个指针 (例如,

char *strptr = NULL;

并将其指向String str," hello"? (像这样: strptr-> str->"你好" strptr->"你好"< -str

我尝试了双指针,或更改了指针类型..但都失败了

5 个答案:

答案 0 :(得分:3)

是的,2个指针确实可以指向相同的数字。

const char *a = "str";
const char *b = a;

他们现在指向相同的字符串。

答案 1 :(得分:1)

char * str = "hello";

你现在想要第二个指针就像第一个指针一样。所以声明它就像第一个char * strptr

现在也应该指出同样的事情。那你怎么做的?你怎么做一些与A相同类型的东西B,它拥有与A相同的信息?

你分配它。

char * strptr = str;

请注意,strstrptr目前都指向只读内存,因此可能const。 (除非你真的知道自己在做什么,并希望稍后使用指针指向别的东西。)

答案 2 :(得分:1)

问题的另一部分:

Public Sub testSub(ByVal pUser As String)
    Dim db As DAO.Database
    Dim qdf As DAO.QueryDef
    Dim sqlstr As String

    sqlstr = "UPDATE tTable1 SET Field1 = [which_user] WHERE Field1 IS NULL;"
    Set db = CurrentDb
    Set qdf = db.CreateQueryDef(vbNullString, sqlstr)
    qdf.Parameters("which_user").Value = pUser
    qdf.Execute sqlstr, dbFailOnError
End Sub

答案 3 :(得分:1)

你可以做到

char *strptr = str;

所以你会得到strptr - > “你好”< - str

答案 4 :(得分:0)

指针引用内存地址。您可以使用&运算符获取内存地址本身,双指针指向指向另一个内存地址的内存地址,因此您将拥有所谓的strcpr->str->"hello"指针,该指针指向另一个指针。这是一个例子:

char *str = "Hello!";
char **strp = &str;
// The memory address for the string
printf("%p\n", &str);
// This would print the same address as the previous command as
// they both reference the same string
printf("%p\n", strp);
// This prints the value of your string
printf("%s\n", *strp);

注意双指针如何指向第一个字符串的内存地址。输出应为Hello!

编辑:C语法

相关问题