linux下c语言-day7

2024-05-20 20:08
文章标签 语言 linux day7

本文主要是介绍linux下c语言-day7,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

可以存储地址的变量称为指针,但是知道变量P是一个指针是不够的,更重要的是,编译器必须知道它所指的变量类型,char,int,long所指的类型都不一样。


通过间接运算符*可以访问指针所指的变量值。这个运算符也可以称为取消引用运算符,因为它用于取消对指针的引用。而且声明指针时,一定要初始化他们。使用未初始化的指针存储数据项是很危险的。在使用指针存储一个值时,谁也不知道会覆盖什么内容。


指针是一个变量,他的值是给定类型的另一个变量或常量的地址。使用指针可以在不同的时间访问不同的变量,只要他们的类型相同即可。数组和指针的区别:可以改变指针包含的地址,但不能改变数组名称引用的地址。


而在多维数组中时,用数组名称和一个索引值访问这个二维数组时,例如board【0】,就是在引用一个子数组的地址。仅使用二维数组名称,就是引用该二维数组的开始地址,他也是第一个子数组的开始地址。


内存的使用:

在程序执行期间分配内存时,内存区域中的这个空间称为:堆。还有另一个内存区域,称为堆栈,其中的空间分配给函数的参数和本地变量。在执行完该函数后,存储参数和本地变量的内存空间就会释放


动态分配内存:malloc()函数

使用这个函数时,需要在程序中包含头文件<stdlib.h>。使用malloc()函数需指定要分配的内存字节数作为参数。这个函数返回所分配内存的第一个字节的地址。因为反悔的是一个地址,所以这里可以使用指针。


举个栗子:int *pNumber = (int *)malloc(100);

这条语句请求100个字节的内存,并把这个内存块地址赋予pNumber。只要不修改它,任何时间使用这个变量pNumber,他都会指向所分配的100个字节的第一个int的位置。这个内存块能保存25个int值,每个int占4个字节。


如果因某种原因而不能分配请求的内存,malloc()会返回一个NULL指针。这个指针等于0.最好先用if语句检查请求动态分配的内存是否已分配,在使用它。就如同money,每money又想花钱,会带来灾难性的后果。所以最好写一句话:

if(pNumber == NULL)

{

*/code to deal with no memory allocated */

}

下面就来看一看使用sizeof运算符来分配内存用来显现多个质数的例子,下面是代码片:

#include#include#includeint main()
{
unsigned long *primes = NULL;
unsigned long trial = 0;
bool found = false;
size_t total =0;
size_t count = 0;
int i =0;
printf("How many primes would you like - you will get at least 4 ? ");
scanf("%u",&total);
total = total<4U ? 4U:total;
primes = (unsigned long *)malloc(total*sizeof(unsigned long));
if(primes == NULL)
{
printf("\n Not enough memory .Baby.\n");
return 1;
}
*primes = 2UL;
*(primes + 1) = 3UL;
*(primes + 2) = 5UL;
count = 3U;
trial = 5U;
while(count < total)
{
trial += 2UL;
for(i = 0; i < count ;i ++)
if(!(found = (trial % *(primes+i))))
break;
if(found)
*(primes+count++) = trial;
}
for(i = 0 ; i < total; i++)
{
if(!(i%5U))
printf("\n");
printf("%12lu",*(primes + i));
}
printf("\n");
return 0;
}




这篇关于linux下c语言-day7的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/995948

相关文章

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全