C、C++: 引用、指针、实例、内存模型、namespace
// HelloWorld.cpp : Defines the entry point for the console application.
// #include "stdafx.h"
#include "string.h"
#include "iostream.h" /**
* 在C、C++语言中
* 声名语句中: 声明指针变量用*,声明变量或者常量都不加*。
* 譬如函数声明中的参数,返回值类型等。例如类中的字段的声明。
* 在赋值语句中: * 表示取值。 &表示取变量的地址,也就是取指针。
*
* class,struct,unit: 也遵循上述原则。另外,
* 在使用指针进行变量的访问、方法的调用时,要使用 ->
* 在使用实例进行变量的方式、方法的调用时,要使用.
* 例如personTest()方法中:
* p是指针,*p就是p所指向的实例。
*
* personTest()测试中的内存模型:
* 指针p Value *p ,也可以称为实例
* ___________ __________ ___________
* | | | name |-------> |Fang JiNuo | *name
* | | —————> | age : 23 | |___________|
* |___________| | address | ______________________
* |__________|-------> | Bei Jing, Haid Dian | *address
* |_____________________|
*/
class Person
{
private:
char* name;
int age;
char* address;
public :
char* toString()
{
char* ret=name;
return ret;
}
void setAge(int age){
this->age=age;
}
void setAddress(char* address){
this->address=address;
}
void setName(char* name){
this->name=name;
}
}; void personTest(){
Person * p=new Person();
p->setAddress("Bei Jing, Hai Dian"); // 采用指针的方式赋值
(*p).setName("Fang JiNuo"); // 采用对象的方式赋值
(*p).setAge();
printf("show info:\n%s\n", (*p).toString());
} void switchTest(){
int a=;
int b=;
int c=;
char oper='+';
switch(oper){
case '+':
c=a+b;
case '-':
c=a-b;
break;
case '*':
c=a*b;
break;
}
printf("c = %d %c %d = %d", a, oper, b, c);
} /**
* C 语言的输入输出
*/
void input_Output_test_c(){
printf("Hello World!\n");
printf("zhang san, wo cao \n");
int a,b;
printf("input tow int number, pattern is d, d:\n");
scanf("%d, %d", &a, &b);
printf("a is %d\n",a);
printf("b is %d\n",b);
printf("a+b=%d\n",a+b);
}
/**
* C++ 的输入输出
* 使用前需要include iostream.h
*/
void input_Output_test_cpp()
{
// << out1 << out2 << out3 << out4 << endl;
// endl 代表endline,也就是换行
char * content=new char;
cout << "plese input:" << endl;
cin>> content;
cout << content << endl;
}
/**
* namespace
* C 语言不支持。
* C++ 支持。
*
*/
namespace MyNS
{
void namespaceTest(){
cout << "MyNS namespace invoked" << endl;
}
}
void namespaceTest(){
cout << "current namespace invoked" << endl;
}
int main(int argc, char* args[])
{
// input_Output_test_c();
// personTest();
// switchTest();
// input_Output_test_cpp();
namespaceTest();
MyNS::namespaceTest();
return ;
}
C、C++: 引用、指针、实例、内存模型、namespace的更多相关文章
- 栈 堆 stack heap 堆内存 栈内存 内存分配中的堆和栈 掌握堆内存的权柄就是返回的指针 栈是面向线程的而堆是面向进程的。 new/delete and malloc/ free 指针与内存模型
小结: 1.栈内存 为什么快? Due to this nature, the process of storing and retrieving data from the stack is ver ...
- C++二级指针第二种内存模型(二维数组)
C++二级指针第二种内存模型(二维数组) 二维数组 二维数组本质上是以数组作为数组元素的数组,即“数组的数组”. 定义 类型说明符 数组名[常量表达式][常量表达式] 例如: float a[3][4 ...
- C语言 二级指针内存模型混合实战
//二级指针内存模型混合实战 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #i ...
- C语言 二级指针内存模型③
//二级指针内存模型③ #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #incl ...
- C语言 二级指针内存模型②
//二级指针第二种内存模型 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #incl ...
- C语言 二级指针内存模型①
//二级指针第一种内存模型 #include<stdio.h> #include<stdlib.h> //说明:①:类似于int a[5]={0},数组名a是一维数组a中首元素 ...
- C++对象内存模型2 (虚函数,虚指针,虚函数表)
从例子入手,考察如下带有虚函数的类的对象内存模型: class A { public: virtual void vfunc1(); virtual void vfunc2(); void func1 ...
- c语言二级指针内存模型
第一种: 指针数组作为输入参数 char *myArray[] = {"aaaaaa", "ccccc", "bbbbbb", " ...
- C++二级指针第一种内存模型(指针数组)
二级指针第一种内存模型(指针数组) 指针的输入特性:在主调函数里面分配内存,在被调用函数里面使用指针的输出特性:在被调用函数里面分配内存,主要是把运算结果甩出来 指针数组 在C语言和C++语言中,数组 ...
随机推荐
- PC网站CSS分享
这里想总结些编写网页的经验,以PC端的为主,前面总结过后台的,今天写些前台的,参考了bootstrap3.3.5.bootstrip2.3.2和模版matrix. 前段时间还写过一篇<前端基础学 ...
- 安装最新版本的PHPUnit后,不能使用
我使用的是widows系统.本来3.7.8版本的Phpunit用的是非常顺畅的,最近重新安装phpunit,安装了最小版本,然后在使用的时候就会报很多各种错误.无奈之下只能降版本到3.7.8 首先要卸 ...
- 弹窗层效果的实现(非jQuery实现)
要想实现弹窗的效果,首先应该创建一个覆盖层maskLayer,以及一个显示层presentLayer. 其次,每次弹窗时(除首次弹窗外),maskLayer的显示以及隐藏不应该导致文档流的reflow ...
- Cesium原理篇:4Web Workers剖析(2)
What's the WebWorkers? 2008 年 W3C 制定出第一个 HTML5 草案中提出了工作线程(Web Worker)的概念,并且规范出 Web Worker 的三大主要特征:能够 ...
- 利用SimpleExpandableListAdapter为ExpandableListActivity提供数据
首先MainActivity继承自ExpandableListActivity,其中的声明如下: setContentView(R.layout.expandmain); //定义一个:List,该L ...
- java删除文件,慎重
在处理删除图片的时候,我将图片路径从数据库取出,然后执行如下删除代码: void deleteFile(File file){ if(file!=null && file.exists ...
- JS验证图片格式和大小并预览
用于上传图片的js验证: <%@ page language="java" contentType="text/html; charset=UTF-8"p ...
- 30行代码让你理解angular依赖注入:angular 依赖注入原理
依赖注入(Dependency Injection,简称DI)是像C#,java等典型的面向对象语言框架设计原则控制反转的一种典型的一种实现方式,angular把它引入到js中,介绍angular依赖 ...
- DDL/DML是什么?
DDL:(Data Definition Language)数据库定义语言 它是定义数据库的语言, 里面包含: CREATE ALTER DROP TRUNCATE COMMENT RENAME DM ...
- Redis 学习笔记(C#)
Redis安装及简单操作 Windows下安装步骤: 1. 第一步当然是先下载咯~ 地址:https://github.com/dmajkic/redis/downloads (根据自己实际情况选择 ...