C语言-结构化的程序设计语言
1.顺序结构 2.选择~ 3.循环~
int main() {
int ch = 0;
//ctrl+Z
//EOF=end of file -> -1
while ((ch=getchar())!=EOF)
{
putchar(ch);
}
return 0;
}
int main() {
int ret = 0;
int ch = 0;
char password[20] = { 0 };
printf("请输入密码:>");
scanf("%s",password);
//getchar();//读取一下'\n'
while ((ch=getchar())!='\n') {
;
}
printf("请确认Y/N:>");
ret=getchar();
if(ret=='Y')
{
printf("确认成功");
}
else
{
printf("放弃确认");
}
return 0;
}
数组作为参数传入函数
#include<stdio.h>
int SumOfElements(int A[],int size)
{
int i, sum = 0;
for (i = 0; i < size; i++)
{
sum += A[i];
}
return sum;
}
int main()
{
int A[] = { 1,2,3,4,5 };
int size = sizeof(A) / sizeof(A[0]);
int total = SumOfElements(A,size);
printf("sum of elements = %d\n", total);
return 0;
}
在函数里计算数组大小 结果就不正确了
#include<stdio.h>
int SumOfElements(int A[])
{
int i, sum = 0;
int size = sizeof(A) / sizeof(A[0]);
for (i = 0; i < size; i++)
{
sum += A[i];
}
return sum;
}
int main()
{
int A[] = { 1,2,3,4,5 };
int total = SumOfElements(A);
printf("sum of elements = %d\n", total);
return 0;
}
因为数组作为参数传入函数,只会传入一个整型的指针变量,也就是main函数中的数组A的首元素的地址;这里不是拷贝变量的值,仅仅是拷贝变量的地址,首个元素的地址,因此,这里是传引用,数组总是作为引用传给函数,数组有的很大,如果都传给函数,拷贝数据过多耗费大量内存。
通过对于数组解引用,可以实现对于数组值的改变:
#include<stdio.h>
void Double(int A[],int size)
{
int i, sum = 0;
for (i = 0; i < size; i++)
{
A[i] = 2 * A[i];
}
}
int main()
{
int A[] = { 1,2,3,4,5 };
int size = sizeof(A) / sizeof(A[0]);
Double(A,size);
for (int i = 0; i < size; i++) {
printf("%d ",A[i]);
}
return 0;
}
字符数组
字符串是一组字符连成的。
int main()
{
//初始化字符数组
char C[20] = {"JHON"};//结尾自动补\0
char C[] = { "JHON" };//结尾自动补\0
char C[] = { 'J','H','O','N','\0' };//结尾不会自动补\0,需要显式的自己补全,不然err
//int len = strlen(C);//打印字符串长度,到\0为止,不包括\0
//printf("%s", C);
return 0;
}
#include<stdio.h>
void Print(char C[])
{
int i=0;
while (C[i] != '\0')
{
printf("%c", C[i]);
i++;
}
printf("\n");
}
int main()
{
char C[20] = "Hello";
Print(C);
return 0;
}
传入函数的数组,变成了字符指针
void Print(char C[]) //char C[]=char* C
{
while(*C!='\0')
{
printf("%c",*C);
C++;
}
printf("\n");
}
int main()
{
char C[20] = "Hello";
Print(C);
return 0;
}
#include<stdio.h>
void Print(char C[])
{
C[0] = 'A';
while(*C!='\0')
{
printf("%c",*C);
C++;
}
printf("\n");
}
int main()
{
char C[20] = "Hello";
//char* C="hello";//字符常量不可进行修改
//C[0]='A';//result:err
Print(C);
return 0;
}
根据B站fengmuzi2003**上传的C语言指针视频学习