4

C语言基础入门详解二_51CTO博客_c语言入门自学零基础

 1 year ago
source link: https://blog.51cto.com/u_15880918/6989777
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

C语言基础入门详解二

精选 原创

IT路宇 2023-08-07 07:41:18 ©著作权

文章标签 c语言 开发语言 android JNI C语言入门 文章分类 代码人生 阅读数138

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂,风趣幽默",感觉非常有意思,忍不住分享一下给大家。
👉 点击跳转到教程

一、C语言多级指针入门

#include<stdio.h>
#include<stdlib.h>

/**
	多级指针 
	指针指向的就是内存地址
	地址就是指针 
*/ 
main(){
	//定义一个int类型的变量i,并且赋值为100; 
	int i = 100;
	//定义一个int类型的一级指针变量address1,并且把i的地址赋值给它 
	int* address1 = &i;
	//定义一个int类型的二级指针变量address2,并且把address1对应的地址赋值给它 
	int** address2 = &address1;
	//定义三级指针 
	int*** address3 = &address2;
	//定义四级指针
	int**** address4 = &address3;
	
	//多级指针取值 ****address4得到的值是100
	printf("****address4==%d\n",****address4); 
	****address4 = 2000;
	printf("****address4==%d\n",****address4); 
	
	printf("***address3==%d\n",***address3); 
	****address4 = 2000;
	printf("***address3==%d\n",***address3); 
	printf("i==%d\n",i); 
	system("pause");
}

输出到控制台内容如下:

C语言基础入门详解二_JNI

对应的内存分析图如下:

C语言基础入门详解二_android_02

二、C语言中数组的简介

#include<stdio.h>
#include<stdlib.h>

/**
	数组的介绍
	1.数组的取值
	2.数组的取地址
	3.数组是一块连续的内存空间
	4.数组的首地址和数组的地址相同 
	5.数组的设计 
*/ 
main(){
	char cArray[] = {'H','E','L','L','O'}; 
	int iArray[] = {1,2,3,4,5};
	//取数组的值
	printf("cArray[0]==%c\n",cArray[0]); 
	printf("iArray[0]==%d\n",iArray[0]); 
	
	//取内存地址
	printf("cArray地址==%#x\n",&cArray); 
	printf("cArray[0]地址==%#x\n",&cArray[0]); 
	printf("cArray[1]地址==%#x\n",&cArray[1]); 
	printf("cArray[2]地址==%#x\n",&cArray[2]); 
	printf("cArray[3]地址==%#x\n",&cArray[3]); 
	
	//内存是一块连续的内存空间 
	printf("iArray地址==%#x\n",&iArray); 
	printf("iArray[0]地址==%#x\n",&iArray[0]); 
	printf("iArray[1]地址==%#x\n",&iArray[1]); 
	printf("iArray[2]地址==%#x\n",&iArray[2]); 
	printf("iArray[3]地址==%#x\n",&iArray[3]);
	
	//用指针去取值
	printf("iArray==%d\n",*iArray); 
	printf("iArray[0]==%d\n",*iArray+0); 
	printf("iArray[1]==%d\n",*iArray+1); 
	printf("iArray[2]==%d\n",*iArray+2); 
	printf("iArray[3]==%d\n",*iArray+3); 

	printf("iArray[0]==%d\n",*(iArray+0)); 
	printf("iArray[1]==%d\n",*(iArray+1)); 
	printf("iArray[2]==%d\n",*(iArray+2)); 
	printf("iArray[3]==%d\n",*(iArray+3)); 
	
	
	printf("cArray[0]==%c\n",*(cArray+0)); 
	printf("cArray[1]==%c\n",*(cArray+1)); 
	printf("cArray[2]==%c\n",*(cArray+2)); 
	printf("cArray[3]==%c\n",*(cArray+3)); 
	system("pause");
}

输出到控制台内容如下:

C语言基础入门详解二_C语言入门_03

三、C语言中让用户输入数组

#include<stdio.h>
#include<stdlib.h>

/**
	用户输入一个数组 
*/ 
main(){
	printf("请输入数组的长度:\n");
	//1.用户输入数组的长度
	int length;
	scanf("%d",&length);
	printf("您输入的数组长度为:%d\n",length);
	//2.用户根据用户输入的长度创建数组 
	int iArray[length];
	//3.让用户输入数组的值
	int i;
	for(i=0;i<length;i++){
		printf("请输入iArray[%d]的值:\n",i);
		scanf("%d",&iArray[i]);
	}
	//4.把数组内容打印出来
	for(i=0;i<length;i++){
		printf("iArray[%d]的值=%d\n",i,iArray[i]);
	}
	 
	system("pause");
}

输出到控制台内容如下:

C语言基础入门详解二_JNI_04

四、C语言中数组的取值运算

#include<stdio.h>
#include<stdlib.h>

/**
	数组的介绍
	1.数组的取值
	2.数组的取地址
	3.数组是一块连续的内存空间
	4.数组的首地址和数组的地址相同 
	5.数组的设计 
*/ 
main(){
	char cArray[] = {'H','E','L','L','O'}; 
	int iArray[] = {1,2,3,4,5};
	//取数组的值
	printf("cArray[0]==%c\n",cArray[0]); 
	printf("iArray[0]==%d\n",iArray[0]); 
	
	//取内存地址
	printf("cArray地址==%#x\n",&cArray); 
	printf("cArray[0]地址==%#x\n",&cArray[0]); 
	printf("cArray[1]地址==%#x\n",&cArray[1]); 
	printf("cArray[2]地址==%#x\n",&cArray[2]); 
	printf("cArray[3]地址==%#x\n",&cArray[3]); 

    printf("cArray地址==%#x\n",cArray); 
	printf("cArray+0地址==%#x\n",cArray+0); 
	printf("cArray+1地址==%#x\n",cArray+1); 
	printf("cArray+2地址==%#x\n",cArray+2); 
	
	//内存是一块连续的内存空间 
	printf("iArray地址==%#x\n",&iArray); 
	printf("iArray[0]地址==%#x\n",&iArray[0]); 
	printf("iArray[1]地址==%#x\n",&iArray[1]); 
	printf("iArray[2]地址==%#x\n",&iArray[2]); 
	printf("iArray[3]地址==%#x\n",&iArray[3]);
	
	printf("iArray地址==%#x\n",iArray); 
	printf("iArray+0地址==%#x\n",iArray+0); 
	printf("iArray+1地址==%#x\n",iArray+1); 
	printf("iArray+2地址==%#x\n",iArray+2); 
	printf("iArray+3地址==%#x\n",iArray+3);
	
	//用指针去取值
	printf("iArray==%d\n",*iArray); 
	printf("iArray[0]==%d\n",*iArray+0); 
	printf("iArray[1]==%d\n",*iArray+1); 
	printf("iArray[2]==%d\n",*iArray+2); 
	printf("iArray[3]==%d\n",*iArray+3); 

	printf("iArray[0]==%d\n",*(iArray+0)); 
	printf("iArray[1]==%d\n",*(iArray+1)); 
	printf("iArray[2]==%d\n",*(iArray+2)); 
	printf("iArray[3]==%d\n",*(iArray+3)); 
	
	
	printf("cArray[0]==%c\n",*(cArray+0)); 
	printf("cArray[1]==%c\n",*(cArray+1)); 
	printf("cArray[2]==%c\n",*(cArray+2)); 
	printf("cArray[3]==%c\n",*(cArray+3)); 
	system("pause");
}

输出到控制台内容如下:

C语言基础入门详解二_JNI_05
#include<stdio.h>
#include<stdlib.h>

/**
	用户输入一个数组 
*/ 
main(){
	printf("请输入数组的长度:\n");
	//1.用户输入数组的长度
	int length;
	scanf("%d",&length);
	printf("您输入的数组长度为:%d\n",length);
	//2.用户根据用户输入的长度创建数组 
	int iArray[length];
	//3.让用户输入数组的值
	int i;
	for(i=0;i<length;i++){
		printf("请输入iArray[%d]的值:\n",i);
//		scanf("%d",&iArray[i]);
		scanf("%d",iArray+i);
	}
	//4.把数组内容打印出来
	for(i=0;i<length;i++){
//		printf("iArray[%d]的值=%d\n",i,iArray[i]);
		printf("iArray[%d]的值=%d\n",i,*(iArray+i));
	}
	 
	system("pause");
}

输出到控制台内容如下:

C语言基础入门详解二_C语言入门_06

五、C语言中的指针长度

#include<stdio.h>
#include<stdlib.h>

/**
	指针的长度 是八个字节 
	在C语言中,指针的长度是由平台的架构和操作系统的位数决定的。
	在大多数32位操作系统中,指针的长度为4字节(32位),而在64位操作系统中,指针的长度为8字节(64位)
*/ 
main(){
	int* iPoint;
	char* cPoint;
	printf("iPoint的长度==%d\n",sizeof(iPoint));
	printf("cPoint的长度==%d\n",sizeof(cPoint)); 
	system("pause");
}

输出到控制台内容如下:

C语言基础入门详解二_JNI_07

六、C语言中静态内存分配

#include<stdio.h>
#include<stdlib.h>
/**
	静态内存分配地址 
*/ 
void func(int** address){
	//定义int类型的i变量,并且赋值100 
	int i = 100;
	//把i对应的地址赋值给 iPoint 
	*address= &i;
}
main(){
	//定义int类型的一级指针变量iPoint 
	int* iPoint;
	func(&iPoint);
	printf("*iPoint===%d\n",*iPoint);//*iPoint===100  
	printf("*iPoint===%d\n",*iPoint);//*iPoint===0 出现这个的原因是静态内存分配,执行完func()函数后,会被系统回收 
	printf("*iPoint===%d\n",*iPoint);//*iPoint===0
	system("pause");
}

静态内存是程序编译执行后系统自动分配,由系统自动释放,静态内存是栈分配的。

七、C语言中动态内存分配

#include<stdio.h>
#include<stdlib.h>
/**
	动态内存分配 
*/ 
void func(int** address){
	int i = 100;
	int* temp; 
	//malloc(int)-返回内存地址 
	temp=malloc(sizeof(int));
	//把i对应的值,赋值给temp地址对应的值 
	*temp = i;
	//把address对应的地址,对应的值改为temp 
	*address = temp;
	
//	free(temp); //回收内存 
}
main(){
	//定义int类型的一级指针变量iPoint 
	int* iPoint;
	func(&iPoint);
	printf("*iPoint===%d\n",*iPoint);//*iPoint===100  
	printf("*iPoint===%d\n",*iPoint);//*iPoint===100
	printf("*iPoint===%d\n",*iPoint);//*iPoint===100
	system("pause");
}

内存分析图如下:

C语言基础入门详解二_C语言入门_08

输出到控制台内容如下:

C语言基础入门详解二_开发语言_09

八、C语言中动态创建数组

#include<stdio.h>
#include<stdlib.h>
/**
	动态创建数组 
*/ 
main(){
	//动态数组的创建
	printf("请输入您要创建数组的长度:\n");
	//1.让用户输入一个长度
	int length;
	scanf("%d",&length);
	printf("您输入的数组长度为:%d\n",length);
	//2.根据长度,分配内存空间 
	int* iArray = malloc(length*4);
	//3.让用户把数组中的元素依次的赋值 
	int i;
	for(i=0;i<length;i++){
		printf("请输入iArray[%d]的值:",i);
		scanf("%d",iArray+i);
	}
	//4.接收用户输入扩展数组长度
	int suppLength;
	printf("请输入您要扩展数组的长度:\n");
	scanf("%d",&suppLength);
	printf("您要扩展数组的长度为:%d\n",suppLength);
	//5.根据扩展的长度重新分配空间 
	iArray = realloc(iArray,(length+suppLength)*4);
	//6.把扩展长度的元素让用户赋值
	for(i=length;i<length+suppLength;i++){
		printf("请输入iArray[%d]的值:",i);
		scanf("%d",iArray+i);
	}
	//7.输出数组
	for(i=0;i<length+suppLength;i++){
		printf("iArray[%d]的值==%d\n",i,*(iArray+i));
	} 
	system("pause");
}

输出到控制台内容如下:

C语言基础入门详解二_开发语言_10

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK