指针应用基础练习

简介: 指针应用基础练习

(1)一级指针,二级指针


void  getString(char  **p)
{
    *p = "hello world";
}
int main(void)
{
    char *str = NULL;
    getString(&str);
    printf("%s\n",  str);
}

代码分析:

定义了一个char型指针str,开始的时候指向NULL,即str此时的值为0。 然后将 str 的地址传递给函数 getString(),而**p就是*p的地址,那么str的地址=*p的地址,所以

*p  = "hello world";
等价于:
str = "hello world";

(2)指针在字符串函数中的应用(strok)



对于这个函数需注意


1.该函数会改变原始字符串 str,使其所包含的所有分隔符变成结束标记 ‘\0’ 。

2.由于该函数需要更改字符串 str,因此 str 指向的内存必须是可写的。

3.首次调用时 str 指向原始字符串,此后每次调用 str 用 NULL 代替。


如果想详细了解strtok:http://t.csdn.cn/mwDpI


#include<stdio.h>
#include<string.h>
int main()
{
  char str[80]="aaa-bbb-ccc";
  const char stop[2]="-";
  char *s;
  s=strtok(str,stop);
  while(s!=NULL)
  {
  printf("%s ",s);
  s=strtok(NULL,stop);
  } 
  return 0;
}

执行结果如下



3)编写一个程序,将两个给定的字符串连接起来,要求不能用 strcat 或 strncat 函数。


注意:要考虑字符串拼接后存储空间是否足够,是否发生内存溢出的情况


代码如下


#include <stdio.h>
#include <string.h>
char *strcat(char *str1, char *str2)
{
  int i;
  i = strlen(str1);
  int j;
  for(j=0; j<50-i; j++)//不能越界
  {
  str1[j+i] = str2[j];
  }
  return str1;
}
int main(void)
{
  char str1[50] = "hello";
  char str2[50] = "csdn";
  printf("合并后: %s\n", strcat(str1, str2));
  return 0;
}


(4)编写一个函数,接收一个给定的字符串,返回去除所有的空格后的字符串

代码如下


#include <stdio.h>
#include <stdlib.h>
char * trim(char *s)
{
    if(s == NULL)
        return s;
    int size = strlen(s) + 1;
    char tmp[size];
    for(int i=0, j=0; i<=size; i++)
    {
        if(s[i]!=' ')
        {
            tmp[j] = s[i];
            j++;
        }
    }
    memcpy(s, tmp, size);//将临时数组的数据复制回原始字符串数组
    return s;
}
int main()
{
    char s[100];
    bzero(s, 100);//保证数组中的数据在使用前被置0
    fgets(s, 100, stdin);//从标准输入stdin中,读取最多100个字符,并将其存储到s数组,fgets函数在读取完字符后会自动停止,或者在遇到换行符后自动停止
    printf("%s\n", trim(s));
    return 0;
}


对于memcpy:不像strncpy函数一样只能拷贝字符,memcpy函数可以拷贝任意类型的内容


http://t.csdn.cn/SHoJL


参数 dest src count

解析 目标空间地址 要拷贝内容空间源地址 拷贝内容字节数


目录
相关文章
|
5月前
|
存储 安全 C++
C++中的引用和指针:区别与应用
引用和指针在C++中都有其独特的优势和应用场景。引用更适合简洁、安全的代码,而指针提供了更大的灵活性和动态内存管理的能力。在实际编程中,根据需求选择适当的类型,能够编写出高效、可维护的代码。理解并正确使用这两种类型,是掌握C++编程的关键一步。
71 1
|
2月前
|
传感器 物联网 大数据
C 指针在物联网的应用
在物联网(IoT)中,C 语言及其指针功能广泛应用于嵌入式系统。C 指针在内存管理、设备驱动、数据结构处理、传感器通信等方面发挥关键作用,如动态分配内存、直接访问硬件寄存器、传递复杂数据结构等,有效提升了资源受限环境下的性能和灵活性。通过函数指针和省电模式管理,还能实现事件驱动编程和节能目标,使 C 语言成为 IoT 开发的重要工具。
66 12
|
6月前
|
C语言
C语言指针——练习
C语言指针——练习
|
2月前
|
存储 安全 C语言
C语言 二级指针应用场景
本文介绍了二级指针在 C 语言中的应用,
|
3月前
|
算法 Java
双指针在数组遍历中的应用
文章深入探讨了双指针技术在数组遍历中的应用,通过实战例子详细解释了快慢指针和首尾指针的不同用法,并提供了解决LeetCode相关问题的Java代码实现。
|
3月前
|
存储 搜索推荐 C语言
C语言中的指针函数:深入探索与应用
C语言中的指针函数:深入探索与应用
|
5月前
|
C++ 存储 Java
C++ 引用和指针:内存地址、创建方法及应用解析
'markdown'C++ 中的引用是现有变量的别名,用 `&` 创建。例如:`string &meal = food;`。指针通过 `&` 获取变量内存地址,用 `*` 创建。指针变量存储地址,如 `string *ptr = &food;`。引用不可为空且不可变,指针可为空且可变,适用于动态内存和复杂数据结构。两者在函数参数传递和效率提升方面各有优势。 ```
|
6月前
|
存储 程序员 C语言
C语言中的函数指针及其应用技术
C语言中的函数指针及其应用技术
70 2
|
6月前
|
C++
多重指针:深入解析、应用与示例
多重指针:深入解析、应用与示例
|
6月前
|
存储 算法 C++
函数的指针:理解与应用
函数的指针:理解与应用
25 1