分析一下代码
char *GetString2(void)
{
char *p = "hello world";
return p;
}
void Test5(void)
{
char *str = NULL;
str = GetString2();
cout<< str << endl;
}
这段代码是可以正常运行的,GetString2返回了只读的内存块,在Test5里面应该是可以访问"hello world"字符串的,在Test5里面对str的任何操作,都是在操作"hello world",所以在Test5里面是不能修改str的内容的,如strcpy(str, "hello");代码将会运行报错,或对str进行内存释放,也会报错,但对str进行读取的话是正常的,如代码中正常显示"hello world"
代码2:
char *GetString(void)
{
char p[] = "hello world";
return p; // 编译器将提出警告
}
void Test4(void)
{
char *str = NULL;
str = GetString(); //str的内容是垃圾
cout<< str << endl;
}
但这段代码运行后str的内容是垃圾,调试了下,发现代码段一、代码段二中GetString(void)返回的地址不一样,按照我的理解两个应该都是返回字符串数组的首地址,为什么两种方式得到的值不一样呢?
分享到:
相关推荐
### 数组与指针的区别详解 #### 一、引言 在C/C++编程语言中,数组和指针是两种非常重要的数据结构。虽然它们在某些方面存在相似性,但本质上有着显著的区别。本文旨在澄清关于数组名是否等同于指针这一常见的误区...
数组的指针和指向数组的指针变量 数组的指针和指向数组的指针变量是编程语言中一个重要的概念。数组的指针是指向数组在内存中的起始地址,而指向数组的指针变量是指向数组元素的指针变量。 概念: * 数组的指针:...
《数组与指针的艺术》是一篇深度探讨C/C++中数组和指针特性的文章,旨在帮助读者理解和掌握这两种核心概念。文章指出,数组和指针是C/C++语言的灵魂,它们提供了对底层操作的强大支持,是语言效率的保证。然而,由于...
数组和指针练习题目(精选) 在编程语言中,数组和指针是非常重要的概念,它们的应用非常广泛,理解基础是非常必要的。本节将通过多种练习题目来加深对数组和指针的理解。 指针基础 指针是一种特殊的变量,它可以...
### 数组和指针的本质与区别 #### 一、引言 在计算机编程领域,数组和指针是程序员必须掌握的两大核心概念。虽然它们在某些情境下表现得极为相似,甚至可以相互转换,但本质上,数组和指针是完全不同的数据结构与...
数组指针和指针数组的区别 在 C 语言中,数组指针和指针数组是两个容易混淆的概念,但它们之间有着巨大的区别。本文将详细讲解数组指针和指针数组的定义、内存布局、区别,并通过实例代码加深读者的理解。 一、...
易语言数组转指针源码,数组转指针,子程序1,子程序2,子程序3,数组_整数转指针,数组_指针转整数,数组_文本转指针,数组_指针转文本,数组_字节集转指针,数组_指针转字节集,内存_申请,内存_释放,内存_取长度,内存_写入,...
在C语言中,数组名和指针之间存在微妙且重要的区别,这往往让初学者感到困惑。虽然在某些上下文中,它们看似可以互换使用,但深入理解它们的本质差异对于编写高效、安全的代码至关重要。 ### 一、数组名与指针的...
10 数组和指针.pdf
2. **数组指针**:可以用来处理二维或更高维度的数组,简化数组操作。 3. **函数指针**:在实现回调函数、策略模式等设计模式时非常有用。 4. **指针函数**:通常用于返回动态分配的数组或其他复杂数据结构。 通过...
数组与指针应用详解,区别 数组名与指针的关系是 C/C++ 编程中的一大难点,许多程序员容易将数组名与指针混淆,认为数组名就是指针。然而,实际上数组名与指针有着本质的区别。 第一点,数组名不是指针。从 sizeof...
在C++编程语言中,数组和指针是两种非常重要的数据结构,它们在内存管理和数据访问方面发挥着关键作用。然而,尽管它们在某些场景下可以互换使用,但它们之间存在着本质的区别,理解这些差异对于高效编程至关重要。 ...
本篇文章详细讲解了指针、指针数组、数组指针、指针的指针等的应用,旨在帮助读者深入理解 C/C++ 语言中的数组和指针概念。 一、指针数组 指针数组是一个数组里存放的都是同一个类型的指针。例如,int *a[10]; 它...
在编程世界中,数组和指针是C/C++等低级语言的核心概念,它们的理解与熟练运用对于程序设计至关重要。本学习资料集包含了对数组和指针的深度解析,旨在帮助学习者彻底掌握这两个概念。 首先,我们来深入探讨数组。...
这种数组指针不同于整型指针,进行地址加 1 运算时,地址值增加了 6(放大因子为 2x3=6)。 对于指向二维数组的指针,需要了解以下几点: 1. 二维数组的地址结构:二维数组的地址结构可以看作是一个二维表格,每个...
本文将深入探讨C++中数组和指针的概念、特点以及它们之间的联系和区别。 #### 二、数组的概念及内存表示 数组是一种基本的数据结构,用于存储同类型元素的集合。每个元素都可以通过索引进行访问,索引通常是从0...
C++数组与指针对象数组对象指针C++数组与指针对象数组对象指针