C++深度解析教程笔记1
本文学习自狄泰软件学院 唐佐林老师的 C++深度解析教程,图片全部来源于课程PPT,仅用于个人学习记录
第1课 - 学习 C++ 的意义
第2课 - C 到 C++ 的升级
C++代码-register与重复全局变量
#include <stdio.h>
int g_v;
//int g_v;
int main(int argc, char *argv[])
{
printf("Begin...\n");
int c = 0;
for(int i=1; i<=3; i++)
{
for(int j=1; j<=3; j++)
{
c += i * j;
}
}
printf("c = %d\n", c);
register int a = 0;
printf("&a = %p\n", &a);
printf("End...\n");
return 0;
}
cmd命令
D:\Users\cyz1994\Cxuexi\g++>g++ 2-1.cpp
D:\Users\cyz1994\Cxuexi\g++>a
Begin...
c = 36
&a = 000000000061FE10
End...
//C++ 编译运行OK
D:\Users\cyz1994\Cxuexi\g++>gcc 2-1.c
2-1.c: In function 'main':
2-1.c:24:5: error: address of register variable 'a' requested
printf("&a = %p\n", &a);
// C编译报错
C++代码
#include <stdio.h>
struct Student
{
const char* name;
int age;
};
f(i)
{
printf("i = %d\n", i);
}
g()
{
return 5;
}
int main(int argc, char *argv[])
{
Student s1 = {"Delphi", 30};
Student s2 = {"Tang", 30};
f(10);
printf("g() = %d\n", g(1,2,3,4,5));
return 0;
}
cmd
D:\Users\cyz1994\Cxuexi\g++>g++ 2-2.cpp
2-2.cpp:9:2: error: expected constructor, destructor, or type conversion before '(' token
f(i)
^
2-2.cpp: In function 'int main(int, char**)':
2-2.cpp:25:5: error: 'f' was not declared in this scope
f(10);
^
2-2.cpp:27:37: error: too many arguments to function 'int g()'
printf("g() = %d\n", g(1,2,3,4,5));
^
2-2.cpp:14:1: note: declared here
g()
^
/*注释g() f()相关行后 编译成功*/
D:\Users\cyz1994\Cxuexi\g++>g++ 2-2.cpp
D:\Users\cyz1994\Cxuexi\g++>a
复制到C文件后,GCC编译
D:\Users\cyz1994\Cxuexi\g++>gcc 2-2.c
2-2.c: In function 'main':
2-2.c:22:5: error: unknown type name 'Student'; use 'struct' keyword to refer to the type
Student s1 = {"Delphi", 30};
^~~~~~~
struct
2-2.c:22:19: warning: initialization of 'int' from 'char *' makes integer from pointer without a cast [-Wint-conversion]
Student s1 = {"Delphi", 30};
^~~~~~~~
2-2.c:22:19: note: (near initialization for 's1')
2-2.c:22:29: warning: excess elements in scalar initializer
Student s1 = {"Delphi", 30};
^~
2-2.c:22:29: note: (near initialization for 's1')
2-2.c:23:5: error: unknown type name 'Student'; use 'struct' keyword to refer to the type
Student s2 = {"Tang", 30};
^~~~~~~
struct
2-2.c:23:19: warning: initialization of 'int' from 'char *' makes integer from pointer without a cast [-Wint-conversion]
Student s2 = {"Tang", 30};
^~~~~~
2-2.c:23:19: note: (near initialization for 's2')
2-2.c:23:27: warning: excess elements in scalar initializer
Student s2 = {"Tang", 30};
^~
2-2.c:23:27: note: (near initialization for 's2')
//添加 typedef后编译成功
D:\Users\cyz1994\Cxuexi\g++>gcc 2-2.c
D:\Users\cyz1994\Cxuexi\g++>gcc 2-2.c
2-2.c:9:1: warning: return type defaults to 'int' [-Wimplicit-int]
f(i)
^
2-2.c: In function 'f':
2-2.c:9:1: warning: type of 'i' defaults to 'int' [-Wimplicit-int]
2-2.c: At top level:
2-2.c:14:1: warning: return type defaults to 'int' [-Wimplicit-int]
g()
^
D:\Users\cyz1994\Cxuexi\g++>a
i = 10
g() = 5
C代码
#include <stdio.h>
typedef struct Student_t Student;
struct Student_t
{
const char* name;
int age;
};
f(i)
{
printf("i = %d\n", i);
}
g()
{
return 5;
}
int main(int argc, char *argv[])
{
Student s1 = {"Delphi", 30};
Student s2 = {"Tang", 30};
f(10);
printf("g() = %d\n", g(1,2,3,4,5));
return 0;
}