地址 指针 及 引用 测试
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
string h1 = "hello";
string h2 = h1;
printf("address of h1:%X,Value=%s\r\n",h1.c_str(),h1.c_str());
printf("address of h2:%X,Value=%s\r\n\r\n",h2.c_str(),h2.c_str());
h1[2] = '2';
//h2[2] = '3';
printf("address of h1:%X,Value=%s\r\n",h1.c_str(),h1.c_str());
printf("address of h2:%X,Value=%s\r\n\r\n",h2.c_str(),h2.c_str());
h1[2] = 'X';
h2[3] = 'Y';//<---COPY ON WRITE OCCUR
printf("address of h1:%X,Value=%s\r\n",h1.c_str(),h1.c_str());
printf("address of h2:%X,Value=%s\r\n",h2.c_str(),h2.c_str());
system("PAUSE");
return EXIT_SUCCESS;
}
C#
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
System.Text.StringBuilder h1 = new System.Text.StringBuilder("hello");
System.Text.StringBuilder h2 = h1;
string h3 = h1.ToString();
string h4 = "hello";
h1[2] = 'y';
h2[2] = 'm';
Console.WriteLine(h1.ToString());
Console.WriteLine(h2.ToString());
Console.WriteLine(object.Equals(h4, h3) ? "Yes" : "No");
Console.WriteLine(object.ReferenceEquals(h4,h3) ? "Yes" : "No");
int a = 5;
double b = 5;
Console.WriteLine(object.Equals(a, b) ? "Yes" : "No");
Console.WriteLine((a==b) ? "Yes" : "No");
Console.WriteLine(object.ReferenceEquals(a, b) ? "Yes" : "No");
Console.Read();
}
}
}
浙公网安备 33010602011771号