我在main()函数上面创建了函数和调用.它在Linux平台上成功调用GCC编译器中的函数.我不明白,main函数如何调用我自己的函数.
#include <iostream>
using namespace std;
int myFunc();
int ret = myFunc();
int main()
{
cout << ret << endl;
}
int myFunc()
{
int i = 10, j = 20, k;
k = i+j;
return k;
}
Run Code Online (Sandbox Code Playgroud) 我已经使用gcc prog.c -Wall -Wextra -pedantic -std=gnu11命令在GCC上编译了以下代码.它不会产生任何警告或错误.
码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i = 10;
int *ptr = malloc(1);
ptr = &i; // is it legal?
printf("%d\n", *ptr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
显示的输出10.
这里,为ptr指针使用malloc函数分配动态内存,然后ptr保存ivarable 的地址.
ptr = &i;用C语写是否合法?
编辑:
那么,编译器是否可以生成有关内存泄漏的警告?
我在 C++17 中制作了基于嵌套范围的 for 循环程序。
#include <iostream>
#include <vector>
int main()
{
std::vector<int> v = {0, 1, 2, 3, 4, 5};
for (int i : v)
{
for (int a : i)
std::cout << a << ' ';
}
}
Run Code Online (Sandbox Code Playgroud)
GCC 产生错误:
main.cpp: In function 'int main()':
main.cpp:10:22: error: 'begin' was not declared in this scope
for (int a : i)
Run Code Online (Sandbox Code Playgroud)
所以,
以下两个代码段之间是否有任何优化?
情况1:
int func()
{
int a = 10;
return a;
}
Run Code Online (Sandbox Code Playgroud)
第一种情况为函数中的变量赋值,然后返回该变量.
案例2:
int func()
{
return 10;
}
Run Code Online (Sandbox Code Playgroud)
第二个函数只是直接返回值.
另外,哪一个更快?
我是C#的新手.我知道C和C++语言.目前我有一个C#相关项目.所以,我只想了解C#的基本概念.
在C#中,如果我给出负数组索引,那么会发生什么?它是未定义的行为吗?
喜欢 :
int [] arr = {1,2,3};
Console.WriteLine("{0}", arr[-1]);
Run Code Online (Sandbox Code Playgroud)