`

C字符串指针操作

阅读更多
下面是我自己的见解,不具有权威性,如果哪位大神发现错误还请指出以共同进步。

int main(int argc,char*argv[]){
    char *temp;
    temp="King";
    printf("temp address is %d\n",temp);//此处temp的内存地址应该指向栈空间的地址。此时未给temp分配堆内存,如果调用srncpy(temp,"abc",4);则会出错,我估计是因为strncpy函数是给分配堆空间的变量赋值的函数,但我们尚未给temp使用malloc或calloc函数分配内存空间。
    printf("temp is %s\n",temp);
   
    char *tempStr="A Hi Android";
    printf("tempStr address is %d\n",tempStr);
   
    temp=(char*)malloc(sizeof(char)*0);
    printf("temp address is %d\n",temp);
    strncpy(temp,"Hi",strlen("Hi Android")+1);//在上面我们给temp分配了堆内存空间,虽然我们分配了0个字节的空间,但此时temp的地址值已经指向堆空间,所以我们调用strncpy函数不会出错,并且此时若输出temp的值,就是我们调用函数strncpy所赋的值“Hi”。

    free(temp);
    printf("after free temp is %s\n",temp);//此处输出的地址值同未调用free函数之前的地址相同,free(temp)操作的结果是:指针temp指向的地址没变,但地址处的数据此时已经无定义了。即,指针还在,但是数据已经被释放了。
    strncpy(temp,"abc",4);//此处仍会成功执行,因为free未使得temp的地址指针改变,temp地址的指针值依然指向堆空间,但此时的空间值可以再次被申请,所以最好在free一个变量的空间后,将变量的指针赋值为NULL。否则如果后面有类似于这样的语句char* tempStr;tempStr=(char*)malloc(sizeof(char)*16);strncpy(tempStr,"zhao",5);printf("tempStr is %s temp is %s",tempStr,temp );temp的值就变成了"zhao"不再是上面的“abc”。
}
注解:我原以为strncpy函数的第一个变量的地址值不是NULL就可以使用,但当我改变了temp的地值之后仍然不能使用,我就想可能是因为strncpy操作的第一个变量的地址值必须指向堆空间才可以,不知道对不对。
分享到:
评论

相关推荐

    C语言字符串指针(指向字符串的指针)_C语言中文网1

    在处理字符串时,我们可以使用指针来操作字符串,这就是所谓的“字符串指针”。 1. **指针的概念** 指针是一个变量,它存储了另一个变量的地址。在C语言中,我们可以通过指针间接访问和修改被指向的变量。指针的...

    字符串与指针

    根据给定的信息,本文将对“字符串与指针”这一主题进行深入解析,重点围绕C/C++编程语言中的实现方式及应用技巧。 ### 字符串与指针的关系 #### 一、基本概念介绍 在C/C++语言中,字符串本质上是由字符组成的...

    C 语言 指针实现字符串的逆序调序输出

    总的来说,理解和掌握C语言中的指针与字符串操作对于任何C程序员来说都是至关重要的,它们是构建更复杂程序的基础。逆序和调序字符串只是冰山一角,实际编程中可能会遇到更多复杂的需求,都需要借助指针的强大功能来...

    C 语言 指针实现 字符串是否为回文

    根据给定的文件信息,我们可以总结出以下关于“C 语言 指针实现 字符串是否为回文”的详细知识点: ### C语言中的指针与字符串操作 #### 回文概念简介 在数学和计算机科学领域,一个字符串被称为回文(Palindrome...

    C 语言字符串操作大全

    因此,我将基于标题和描述中提供的信息,即“C 语言字符串操作大全”,来构建相关知识点。 C语言是较为古老也是十分基础的编程语言之一,它在计算机编程领域的教学和应用中占据着重要地位。字符串操作是C语言中一个...

    linux下c字符串操作常用方法

    虽然这些不是直接的字符串操作,但它们扩展了C在处理文本数据时的能力,尤其是在Linux环境中。 以上就是Linux下C语言字符串操作的常见方法。理解并熟练运用这些技巧,将有助于提升你的Linux系统编程能力。

    字符串操作函数大全(String)

    函数返回:指向拷贝后的字符串指针。 参数说明:src-待拷贝的源字符串。 strcpy 函数 strcpy 函数也是字符串拷贝函数之一,它可以将源字符串拷贝到目的字符串中。该函数的原型为: `char* strcpy(char* str1,...

    C语言字符串操作大全

    在C语言中,字符串操作是编程中常见的任务,涉及到对文本数据的处理和管理。本文将详细讲解几个常用的C语言字符串操作函数,包括`stpcpy`、`strcat`、`strchr`、`strcmp`以及`strncmpi`。 1. `stpcpy`函数: `...

    pointer_字符串_指针_

    在编程世界中,指针是C/C++等语言中的核心概念,它允许我们直接操作内存地址,从而实现高效的数据操作和复杂的数据结构管理。在这个实例中,我们将探讨如何使用指针来处理字符串,并通过指针串联模块来读取和操作...

    C语言字符串函数大全C/C++基础 字符串操作大全

    根据提供的信息,我们可以详细探讨几个重要的C语言字符串处理函数,这些函数是进行字符串操作的基础工具。下面我们将逐一介绍这些函数的功能、用法以及提供具体的示例代码。 ### 1. stpcpy #### 功能 `stpcpy` 函数...

    C语言字符串与指针

    另一个重要知识点是字符串指针作为函数参数的使用。在C语言中,函数可以使用指针来操作字符串,这允许函数修改字符串的内容,并将修改后的字符串返回给调用者。这种机制是通过使用地址传递实现的,函数参数可以是...

    字符串基本操作-复制,连接,比较等

    同样地,通过两个指针分别指向被连接字符串和目标字符串,在被连接字符串的末尾继续添加另一个字符串的字符,最后添加结束符来完成连接操作。 示例代码如下: ```c int link(char *a, char *b) { while (*a != '\0...

    C语言程序设计-指针与字符串.pptx

    理解它们之间的关系,如指针如何存储和访问字符串的内存地址,以及如何通过指针进行字符串操作,是成为熟练的C程序员的基础。同时,要注意字符串操作的安全性,避免未初始化的指针和越界访问,以防止潜在的程序错误...

    字符型指针与字符串分析.zip

    首先,字符型指针,也称为字符串指针,是C/C++中处理文本数据的主要方式。它是一个指向字符的指针,可以用来指向一个字符串的首字符。在C++中,字符串实际上是一系列连续的字符,以空字符'\0'作为结束标志。例如: ...

    字符型指针与字符串.zip

    值得注意的是,通过指针操作字符串时,要特别注意字符串的长度,避免超出数组边界。 字符串在C语言中被当作字符数组处理,但有一些特定的函数如`strlen()`用于计算字符串的长度,`strcpy()`和`strcat()`用于复制和...

    C语音指针于字符串技巧

    但是,我们需要注意指针操作的含义,避免出现错误。 在本节中,我们讨论了字符数组和字符指针的区别,字符串操作的技巧和要点。我们也编写了几个使用指针处理字符串的程序,例如字符串复制函数和字符串长度计算函数...

    c/c++字符串操作大全

    在C/C++编程语言中,字符串处理是非常常见的需求之一。本篇文章将详细介绍几个常用的字符串操作函数及其使用方法,包括`stpcpy`、`strcat`、`strchr`、`strcmp`、`strncmpi`、`strcpy`以及`strcspn`。 #### 1. ...

    c字符串解析处理功能函数集

    本压缩包包含了一组C字符串操作的功能函数,旨在提高代码的易用性和空间效率。下面将详细阐述这些函数可能涉及的知识点。 1. **字符串复制**: - `strcpy` 函数:用于将一个字符串(源地址`s`)完整地复制到另一个...

    字符串截取(C)

    接下来,我们将介绍两种常见的字符串截取方法:`strncpy`函数和指针操作。 1. **strncpy函数**: `strncpy`函数是C标准库中的一个函数,用于安全地复制字符串的一部分。它的原型如下: ```c char *strncpy(char ...

Global site tag (gtag.js) - Google Analytics