请参阅以下声明:
char a[5]="jgkl"; // let's call this Statement A
char *b="jhdfjnfnsfnnkjdf"; // let's call this Statement B , and yes i know this is not an Array
char c[5]={'j','g','k','l','\0'}; // let's call this Statement C
Run Code Online (Sandbox Code Playgroud)
现在,陈述A和C之间有什么区别吗?我的意思是两个都应该在Stack上吗?只有b将位于静态位置.
那么在程序的整个生命周期中,不会使"jgkl"存在于静态位置吗?既然它应该是只读/常数?请澄清.
让我们说我有
#include<stdio.h>
#include"File2.c"
void test(void)
{
sum(1,2);
}
int main(void)
{
int sum(int a,int b);
test();
sum(10,20);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
int sum(int x,int y)
{
printf("\nThe Sum is %d",x+y);
}
Run Code Online (Sandbox Code Playgroud)
现在我的理解是test()调用sum()应该给出一个编译时错误,因为我已经/声明了sum()本地到main,我没有得到,并且程序运行良好没有任何错误.
我的主要目的是在File2.c中定义sum并使其为main()的本地,这样其他函数就无法看到这个函数sum().
我哪里错了?
我的目标是制作一个非常简单和基本的C语法检查器.(不是一个完整的编译器,而只是一个基本程序,它将源代码作为输入,并打印出显示错误的代码).我想用C++作为语言.
任何人都可以指导我用'c ++'语言编写正则表达式,如下所示:
任何细节/建议/指导将进一步非常感谢.
#include<iostream>
using namespace std;
struct My_Class{
class My_struct{
int am_i_in_class_or_struct;
};
};
int main(){
cout<<sizeof(My_Class)<<endl;
cout<<sizeof(My_struct)<<endl;
cout<<sizeof(int);
}
Run Code Online (Sandbox Code Playgroud)
请解释:当我在Turbo C上执行上述程序时,我得到了输出:1 2 2现在不应该在每种情况下大小相同,或者至少My_Class应该具有与My_struct相同或更大的大小!如果程序中有错误,请尽可能修复它们,否则请忽略它并专注于手头的问题!我不相信Turbo C就是这样......但是目前我的VS 2008因为我的Ram变坏而不断崩溃!
如果a = 1,b = 2,c = 3 ...我想写一个像这样连接它们的宏.但是当我尝试这个时:
#include<stdio.h>
#define cat(a,b,c) a##b##c
int main()
{
int a=1,b=2,c=3,d;
d=cat(1,2,3); //Works
d=cat(a,b,c); // Returns an error...How to make this work?
return 0;
}
Run Code Online (Sandbox Code Playgroud) 每当我们使用命令时:
dir --> in Windows
Run Code Online (Sandbox Code Playgroud)
和
dir -a --> in Unix
Run Code Online (Sandbox Code Playgroud)
我们看到两种点:
.
..
Run Code Online (Sandbox Code Playgroud)
出现在目录中.现在由Stephens Rago在APUE中,它说这些是文件名,有些书说这些是目录.
无论如何,这些点是什么?如果可能的话,请提供Windows和Unix的答案.
在下面的程序我initiliaze 我以255 因此,在二进制,我们有:
0000 0000 1111 1111
Run Code Online (Sandbox Code Playgroud)
这是在十六进制:
0X 0 0 f f
因此根据Little-Endian布局:首先存储低位字节 - 0xff.
#include<cstdio>
int main()
{
int i=0x00ff; //I know 0xff works. Just tried to make it understable
char *cptr=(char *)&i;
if(*(cptr)==-127)
printf("Little-Endian");
else
printf("Big-Endian");
}
Run Code Online (Sandbox Code Playgroud)
所以,当我的地址存储我在CPTR应该指向低字节(假设小端,怎么这是我的系统了).
因此,*cptr包含1111 1111
.这应该降到-127.因为,1位用于符号位.
但是当我打印*cptr的值时我得到-1,为什么会这样呢?
请解释我哪里出错了?
#include <iostream>
#define n 255
using namespace std;
int main()
{
int i=n;
int *ptr=&i;
int const *ptr_1=&i;
const int *ptr_2=&i;
const int * const ptr_3=&i;
}
Run Code Online (Sandbox Code Playgroud)
为什么这个代码在Visual C++,Dev C++和G ++中编译?链接到- Ideone -
一直在浏览这段代码:
#include<cstdio>
#define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0]))
int array[] = {1,2,3,4,5,6,7};
int main()
{
signed int d;
printf("Total Elements in the array are => %d\n",TOTAL_ELEMENTS);
for(d=-1;d <= (TOTAL_ELEMENTS-2);d++)
printf("%d\n",array[d+1]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在显然它没有进入for循环.什么原因?
好吧,我有一个非常基本的问题,所以请放轻松我.
在以下代码中:
#include<iostream>
class base
{
public:
base() { std::cout << "Base()" << std::endl; }
};
class derived: base {
public:
derived() { std::cout << "Derived()" << std::endl; }
};
int main() {
derived d;
}
Run Code Online (Sandbox Code Playgroud)
输出是:
基础()
派生()
我想知道为什么base
即使我正在创建derived
类的对象,也会调用类的构造函数?我找不到合适的答案了FAQ
.
c++ ×8
c ×6
visual-c++ ×2
c++11 ×1
const ×1
linux ×1
objective-c ×1
regex ×1
unix ×1
windows ×1