内存结构示意图 by安萌
test9
//缓冲区接收字符
3 int main()
4 {5 char buf[32] = {0}, str[32] = {0};
6 int i;
7
8 //gets(buf);
9 i = 0;
10 do {
11 buf[i] = getchar();
12 i++;
13 } while ( i<32 && buf[i-1] !='\n' );
14
15 if ( i==32 && buf[i-1]!='\n' ) {
16 while ( getchar() != '\n' )
17 ;
18 }
19 buf[i-1] = '\0';
20
21 i = 0;
22 do {
23 str[i] = getchar();
24 i++;
25 } while ( i<32 && str[i-1] !='\n' );
26 str[i-1] = '\0';
27 printf("buf=%s\n", buf);
28 printf("str=%s\n", str);
29
30 return 0;
31 }
test10
#include <stdio.h>
#include <string.h>
#include <string.h>
int main()
{
char str1[64] = {'\0'};// '\0'的asicc码是0,此数组中存储64个0
strcpy(str1, "hello world");//
//函数名: strcpy
//功 能: 串拷贝//用 法: char *strcpy(char *str1, char *str2);
strcpy(str1+6, "uplooking");
printf("str1:%s\n", str1);
return 0;
test11
//二维数组简单测试
int main()
{
int arr[3][4] = {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
int i, j;
for ( i=0; i<3; i++) {
for ( j=0; j<4; j++) {
printf("%p ", &arr[i][j]);
}
printf("\n");
}
printf("arr=%p arr[0]=%p\n", arr, arr[0]);
printf("arr+1=%p arr[0]+1=%p\n", arr+1, arr[0]+1);
for ( i=0; i<3; i++) {
for ( j=0; j<4; j++) {
printf("%d ", *(*(arr+i)+j)); //arr[i][j]
}
printf("\n");
}
return 0;
test12
#include <stdio.h>
int main()
{
char str[32] = {"hello world uplooking redhat"};
printf("%p %p\n", str, (int*)str);
printf("%c\n", *(str+1));
printf("%c\n", *((char *)((int*)str+1)));
return 0;
}
test13
//函数
#include <stdio.h>
int func(int , int );
函数的声明:告诉编译器有这么个函数,方便后面调用时进行合法性检查
函数必须先声明再调用
参数中参数名可以省略,参数类型不可以省略
没有参数用void 没有返回值用void
int main(void)
{
int x, y;
scanf("%d %d", &x, &y);
printf("%d\n", func(x, y));
函数的调用:调用 返回
x y称为实参
调用:保存当前函数的上下文环境,调用函数并将实参的值传给形参
返回:将return后的表达式的值返回,并恢复上下文环境
参数可以有多个 返回值只能有一个,(可以利用出参获得多个需要的值)
return 0;
}
函数的定义:确定函数的功能
a b称为形参
return返回一个值并使函数终止
return后的表达式的值的类型必须是函数的返回值类型
函数声明和函数定义的三要素必须一样
如果函数的定义出现在函数的声明或者调用之前 定义也是声明
int func(int a, int b)
{
return a>b?a:b;
}
test14
#include <stdio.h>
void func(int *x)
{
(*x)++;
}
int main()
{
int x = 10;
func(&x);
printf("x=%d\n", x);
printf("%p %p %p\n", main, func, printf);
return 0;
}