1.c语言基础
错误:
1.char类型指针str指向这个字符串常量的地址,但是不能通过间接访问修改该字符串。
2.strlen(t,str)中需要给t分配内存。
2.传递多维数组。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void func(int arr[][10][20])
{
for(int i=0;i<5;i++)
{
for(int j=0;j<10;j++)
{
for(int w=0;w<20;w++)
printf(" %d ",arr[i][j][w]);
}
}
}
int main(void)
{
int arr[5][10][20];
for(int i=0;i<5;i++)
{
for(int j=0;j<10;j++)
{
for(int w=0;w<20;w++)
arr[i][j][w]=10;
}
}
func(arr);
return 0;
}
3。纷乱的指针。
&arr[0][0][0] A
&arr[0][0][1] A+1
&arr[0][1][0] A+3
&arr[1][0][0] A+15
&arr[1][0][1] A+16
&arr[0][1][1] A+4
arr A
**arr+1 A+3
*(*arr+1) A+15
**(arr+1) A+150
*(*(arr+1)+1 A+18
*(*(arr+1))+1 A+153
&arr1[][0][0]+1 A+16
&arr[0][2]+1 A+9
&arr[1]+1 A+30
&arr+1 A+150
pr1+2 A+2
pr2+2 A+8
pr3+2 A+16
pr4+2 A+8
t B
t+1 B+8
t[0]+1 B+336
&t[0]+1 B+8
*(&t[0]+1)+1 B+252
t[1] B+248
(int(*)[4])t[1] B+248
((int(*)[4])t[1])+1 B+256
*((int(*)[3][4])t[2]+1)+1 B+396
t[3] B
t[3]-1 B-4
9.
#include <stdio.h> int main(void) { int a=126,count=0,num[100]={0}; int i; while(a>0) { num[count]=a%2; a=(a-num[count++])/2; } for(i=count-1;i>=0;i--) printf("%d",num[i]); return 0; }
10.对宏函数的理解:
1.宏做的是简单的字符串替换,在定义宏时不需要考虑参数的类型,而且定义宏都是大写,但是函数的参数在进行替换的时候,需要考虑参数的类型。
2.宏只占编译时间 ,而函数调用时占运行时间(分配单元,保存,值传递,返回),每次执行的时候都要载入 ,所以相对宏会比较慢。
3.使用宏函数也有缺点 ,使用宏函数过多,会大幅度增加代码的长度,而函数调用则不会。