我正在接受技术面试,面试官给了我一段这样的代码
int a=1;
a++;
...something..
...something.
if(a==25)
a=0;
Run Code Online (Sandbox Code Playgroud)
他说我在不使用switch的情况下重写这段代码,if if或if条件的三元运算符.怎么做?
我只想知道当我们必须使用这些set和get驱动程序API时可能的用例.所有我都知道数据已保存,稍后我们可以使用数据做某事.我的问题是我们真的需要这样做吗?
/*
* These exports can't be _GPL due to .h files using this within them, and it
* might break something that was previously working...
*/
void *dev_get_drvdata(const struct device *dev)
{
if (dev && dev->p)
return dev->p->driver_data;
return NULL;
}
EXPORT_SYMBOL(dev_get_drvdata);
void dev_set_drvdata(struct device *dev, void *data)
{
int error;
if (!dev)
return;
if (!dev->p) {
error = device_private_init(dev);
if (error)
return;
}
dev->p->driver_data = data;
}
EXPORT_SYMBOL(dev_set_drvdata);
Run Code Online (Sandbox Code Playgroud) 由于嵌入在CPU内部TCM具有哈佛架构,因此存在ITCM(指令TCM)和DTCM(数据TCM).DTCM不能包含任何指令,但ITCM实际上可以包含数据.DTCM或ITCM的尺寸最小为4KiB,因此典型的最小配置是4KiB ITCM和4KiB DTCM.
它看起来像tcm与缓存内存具有相同的目的.
不,他们没有在解释中使用缓存这个词
建立一个结构并给它三个这样的成员,
struct student{
int rollno;
char name[10];
int arr[];
}stud1, stud2;
Run Code Online (Sandbox Code Playgroud)
现在给stud1提供4条记录,给stud2提供5条记录.我告诉面试官我们必须给数组一些大小,否则它不会被分配任何空间,否则会给编译错误.他说根据C的新标准,这是可能的.最后我无法理解如何去做.有人有建议吗?我试图做一个realloc,但我不确定自己是否会起作用.
有一段代码产生了"Lvalue required"的错误.代码是,
#include<stdio.h>
#include<conio.h>
#define max 10
int main()
{
printf("%d",max++);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
很明显,Lvalue错误将出现在上面的代码中,所以我将代码更改为
int a;
printf("%d",a=max++);
Run Code Online (Sandbox Code Playgroud)
我想现在常量的值被分配给一个合适的变量,但仍然出现错误.然后我检查了
printf("%d",a=max+1);
Run Code Online (Sandbox Code Playgroud)
它没有任何错误.第二段代码有什么问题?
我正在制作一个简单的C程序
#include<stdio.h>
static int a;
a = 5;
int main()
{
printf("%d",a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译器错误:"非静态声明'a'遵循静态声明"
这个错误是什么意思?
我正在用我的自定义驱动程序构建内核。成功构建后,我发现了许多 build-in.o 文件。任何人都可以详细说明这些文件是如何在这里结束的吗?我只能怀疑这些与更高级别的 makefile 有关。
我试图在没有警告的情况下编译该程序,
#include<stdio.h>
int main()
{
int arr[] = {1,2,3};
printf("value1 = %d value2 %d\n", *(&arr+1), *(arr+1));//here is the warning
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是我收到编译时警告
warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat]
Run Code Online (Sandbox Code Playgroud)
我正在64位ubuntu机器gcc版本4.6.3(Ubuntu/Linaro 4.6.3-1ubuntu5)编译器上编译我的程序.
一个简单的C程序:
#define MAXROW 2
#define MAXCOL 2
int main()
{
int (*p)[MAXROW][MAXCOL];
printf("%d\n",sizeof(*p));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
答案是16.我不明白怎么做.
遵循这条规则:
size =元素数量*sizeof(指针变量,即4)
任何人都可以告诉我如何分析这个表达式,以便答案变得明显吗?
#include<stdio.h>
#include<conio.h>
int main()
{
char arr[]="\0";
if(printf("%s",arr))
printf("not empty");
else
printf("empty");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这里我认为\0将被视为数组中的 1 个字节并printf返回 1 个字节,因此不应打印空。但输出就是返回的empty意思。那么如何服用呢?printf0printf\0