小编Aza*_*zle的帖子

使用extern将数组与指针链接起来

假设我有两个文件:file1.c-包含一个名为"array [10]"的大小为10的int数组的全局定义.file2.c-包含一个名为"extern int*array"的int指针,这里我试图将这个指针链接到数组.

但是当我检查file1.c中的数组地址和file2.c中的指针值时,它们都是不同的.为什么会这样?

c arrays pointers extern

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

尝试增加数组时出现"左值"错误

可能重复:
数组名是C中的指针吗?

假设我有一个char数组说arr和arr将代表第一个元素的地址,所以arr ++应该是完全合法的,那么为什么编译器会说'左值'.

如果我这样做:arr = arr + 1那么为什么它是无效的转换.我只是一个一个地增加指针.编译器告诉LHS操作数类型是char [4],但在RHS上它是char*.

main()
{
char arr[]={'a','b','c','d'};
for(;arr!=arr+4;arr++) //lvalue required 
printf("%c",*arr);
}
Run Code Online (Sandbox Code Playgroud)

c arrays lvalue

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

编译器如何实现继承?

可能重复:
C++:隐藏规则背后的基本原理

假设我有一个代码:

class  A
{       
    public:
    void f(int s) {}
};



class B:public A
{      
    public:
    void f() {}
};

int main()
{      B ob;
   ob.f(4);
} 
Run Code Online (Sandbox Code Playgroud)

然后在这种情况下,编译器会生成一个错误"没有匹配函数来调用'B :: f(int)'"但是B类继承了A作为公共,因此B必须具有函数"void f(int s)".不知道为什么编译器在这里产生错误?

c++ inheritance

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

标签 统计

arrays ×2

c ×2

c++ ×1

extern ×1

inheritance ×1

lvalue ×1

pointers ×1