C语言[char**]与[malloc]的组合使用
简介
首先!要搞懂char**是什么?
我们知道 char* 是字符指针,是一个地址,指向一个字符串。
那么 char** 就是指向 char* 的指针,也是一个地址,指向指针的指针。
使用char** 的时候,通常是用作函数参数。
为了深入理解呢,我们直接定义使用,然后配合malloc(申请内存)来展示
使用
点击查看代码
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i;
int n;
scanf("%d",&n);//n为字符串个数
char **a=(char**)malloc(sizeof(char*)*n);//申请有n个字符串的内存
for(i=0;i<n;i++)
{
//指针可以用数组来表示
a[i]=(char *)malloc(sizeof(char)*5);//申请字符串的大小
scanf("%s",a[i]);
}
for(i=0;i<n;i++)
{
printf("%s\n",a[i]);
free(a[i]);//释放每个字符串的内存
}
free(a);//释放指向指针的a指针的内存
return 0;
}
C语言[char**]与[malloc]的组合使用的更多相关文章
- 关于c语言内存分配,malloc,free,和段错误,内存泄露
1. C语言的函数malloc和free (1) 函数malloc和free在头文件<stdlib.h>中的原型及参数 void * malloc(size_t size ...
- C语言char s[] 和 char *s的差别
C语言char s[] 和 char *s的差别,以下这个回答解说的非常清晰. The difference here is that char *s = "Hello world" ...
- C语言 Char* 和Char 用法
分类专栏: C语言 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/imxlw00/ar ...
- C语言学习017:malloc和free
malloc和free都包含在<stdlib.h>头文件中 局部变量由于存储在栈中,一旦离开函数,变量就会被释放,当我们需要将数据持久使用,就需要将数据保存到堆中,而在堆中申请内存空间就需 ...
- C语言 复制字符串 malloc
今天在看前辈的代码,对其中字符串复制有时候直接把指针赋给另一个指针,有的malloc一个内存,然后把整个字符串的值拷贝过来,有点费解,就研究了一下,会了之后发现也没什么奥秘,其实很简单,不过还是记录一 ...
- 关于c语言char类型输入输出的一个bug
题目 输入一个整数n,接下来n行每一行输入两个用一个空格分隔的字符. 对每一对字符,比较其大小关系并输出比较的结果:1.0.-1. 解决的代码如下: #include<stdio.h> i ...
- c语言内存分配-malloc
malloc 原型:(原来返回类型是char) extern void *malloc(unsigned int num_bytes); 头文件: #include <stdlib.h> ...
- c语言 char*类型作为中间变量将许多字符串保存到一个数组的问题
char*是一个字符串指针,如下面的程序value_作为一个中间变量用来在for循环中scanf输入的值的接收者,然后将value_保存到array中,但是一下程序会出现一个问题就是当你跳出这个函数时 ...
- C语言char[]和char*比较
先看看一个例子: #include <iostream> using namespace std; main() { char *c1 = "abc"; char c2 ...
随机推荐
- if else 还在用吗?
当我们在使用if else 的时候,你是否闻到代码的坏味道呢? 除非非常简单的逻辑,当我们在写一大坨if else的时候,就应该审视一下是否这样写合适呢?是否这一坨代码体现某一个业务语义呢?是否体现领 ...
- 使用supervisor设置应用开机自启
安装supervisor: sudo apt install supervisor -y 创建配置文件: sudo vim /etc/supervisor/conf.d/frpc.conf frpc. ...
- 通过jmeter压测surging
前言 surging是异构微服务引擎,提供了模块化RPC请求通道,引擎在RPC服务治理基础之上还提供了各种协议,并且还提供了stage组件,以便针对于网关的访问, 相对于功能,可能大家更想知道能承受多 ...
- 串口应用:遵循uart协议发送N位数据(状态优化为3个,适用任意长度的输入数据,取寄存器中的一段(用变量作为边界))
上一节中成功实现了发送多个字节的数据.把需要发送的数据分成多段遵循uart协议的数据依次发送.上一节是使用状态机实现的,每发一次设定为一个状态,所以需要发送的数据越多,状态的个数越多,代码越长,因而冗 ...
- JavaScript进阶内容——BOM详解
JavaScript进阶内容--BOM详解 在上一篇文章中我们学习了DOM,接下来让我们先通过和DOM的对比来简单了解一下BOM 首先我们先来复习一下DOM: 文档对象模型 DOM把文档当作一个对象来 ...
- 使用flex防止fit-content子元素冲出父元素宽度的方法
父元素设置了min-width:fit-content后,其宽度由子元素的宽度来决定 <!DOCTYPE html> <html lang="en"> &l ...
- csdn 不可复制代码的解决方法
简介 由于csdn需要登陆才可以复制,需要脚本才可以操作 脚本 直接在console控制台输入以下代码即可直接复制 $("#content_views pre").css(&quo ...
- php apache 和mysql查看版本常用方法收集
php: 1.命令行查询,下图是因为添加php进系统环境变量了 2.预定义常量PHP_VERSION查询 3.phpversion()函数查询 4.phpinfo()查询 apache: mysql: ...
- Redis-浅谈主从同步
主从库集群 Redis 提供了主从库模式,以保证数据副本的一致,在从库执行一下命令可以建立主从库关系: replicaof <dst ip> <dst port> Redis ...
- virtual box 安装虚拟机如何全屏
最近由于要进行微信小程序的开发.可恶的腾讯狗没有提供linux版的开发工具!不得以安装虚拟机!暗号虚拟机后发现win10的界面实在是太小,于是乎去解决这个问题!其实很简单,一般来是说直接点虚拟机面板上 ...