Mis*_*u4u 0 c pointers memory-address
我在教科书中找到了以下代码:
#include<stdio.h>
void disp( int *k)
{
printf("%d",*k);
}
int main( )
{
int i ;
int marks[ ] = { 55, 65, 75, 56, 78, 78, 90 } ;
for ( i = 0 ; i <= 6 ; i++ )
disp ( &marks[i] ) ;
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
代码工作正常,但我对逻辑有疑问:
我发送数组变量的地址.但是在disp函数中我使用指针变量作为参数并打印指针的值.因此,从main函数发送的参数类型应该与参数不匹配disp.那么它是怎样工作的?
我试着通过改变disp函数来做同样的事情
void disp( int (&k))
{
printf("%d",*k);
}
Run Code Online (Sandbox Code Playgroud)
但是我收到了一个错误.我应该怎么做才能使地址作为一个论点,即void disp(int &k)?
1)我发送数组变量的地址.但是在disp函数中,我使用指针变量作为参数并打印指针的值.
理解指针是一个地址.所以,&marks[i] 是的int*.并且您不是打印指针的值,而是指向它指向的值.
printf("%d",*k);
Run Code Online (Sandbox Code Playgroud)
在*k取消引用指针,使指针指向的值.
void disp( int (&k))
Run Code Online (Sandbox Code Playgroud)
是C中的无效语法,&k不是有效的标识符.
| 归档时间: |
|
| 查看次数: |
2639 次 |
| 最近记录: |