基本C指针声明和指针变量我感到困惑

时间:2017-03-06 18:19:16

标签: c pointers

int x = 2; int y = 3; int z[9]; 

声明三个int变量

int *ptr;   

ptr是一个int指针(ptr指向int)

ptr = &x;   

ptr指向x(将x的地址分配给变量ptr)

y = *ptr    

y = 2 dereferensing(将对象或内容或观察者ptr点指定给y)

*ptr = 1;   

x = 1为ptr指向的地址创建新值或内容。

 ptr = &z[5] 

ptr现在指向z [5]

double update(char*)

Q1:我在每个表达式下的评论是否正确?

Q2:我理解函数update的值为double,参数是char指针 但是char指针变量发生了什么 只有一个char*没有指针变量 这是怎么回事?

1 个答案:

答案 0 :(得分:0)

我同意问题评论中的一般情绪:在使用StackOverflow之前阅读C书并学习语言。无论如何,我会尽力回答你的疑虑。

cdecl.org是将C声明语法翻译成英语的好工具。

示例:

double update(char*);

将打印:

declare update as function (pointer to char) returning double

Q1:是的。

Q2:我认为你对char*没有“名字”的事实感到困惑。好吧,函数参数不需要有名称 - 只有类型就足够了。

double update(char*);
double update(char* a);
double update(char* hello);

以上声明是等效的。

如果要引用定义中的参数,那么显然需要一个名称:

double update(char* a)
{
    something(a);
}