我的代码是:
//fun FUNCTION
void fun(int D1, int D2, int arr[D1][D2])
{
//FUNCTION BODY
}
//MAIN FUNCTION
int D1, D2;
int arr[][3]=//VALUES
D2=sizeof(arr[0])/sizeof(a[0][0]);
D1=sizeof(arr)/sizeof(a[0]);
fun(D1,D2,arr);
Run Code Online (Sandbox Code Playgroud)
如果arr函数的参数顺序不确定,编译器将如何知道函数fun中数组的维数?
我尝试创建一个验证:
@Size(min = 6, message = "min 6 characters needed")
private String name;
Run Code Online (Sandbox Code Playgroud)
现在,当我使用带参数的方法(用POST注释)时:
@Valid LoginDetails loginDetails
Run Code Online (Sandbox Code Playgroud)
验证失败时(表单中输入的字符少于 6 个),不会显示错误消息。但如果我用这个作为论据:
@Valid @ModelAttribute("logindetails") LoginDetails loginDetails
Run Code Online (Sandbox Code Playgroud)
显示错误消息 - 我想了解为什么会发生这种情况。
这是最小的可重现代码:
package com.example.validationspring;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
public class LoginDetails {
@NotNull(message = "Username cannot be null")
@Size(min = 6, message = "Username must be at least 6 characters")
private String userName;
// Standard getters and setters
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = …Run Code Online (Sandbox Code Playgroud) 我试图将一个向量中的几个值插入到相同的向量对象中,但似乎出错了:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> vec;
for(int i=0;i<9;i++)
{
vec.push_back(i+1);
}
vec.insert(vec.begin(),vec.begin()+2,vec.end()-4); //PROBLEM
vector<int>::iterator ivec=vec.begin();
while(ivec!=vec.end())
{
cout<<*ivec<<' ';
++ivec;
}
cout<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我期待从元件vec.begin()+2即3至元件vec.end()-4即6被插入到载体中。但是输出是:
3 1 2 1 2 3 4 5 6 7 8 9
Run Code Online (Sandbox Code Playgroud)
编译器是g++ 4.1.2。我在哪里错了?
我写了这个:
#include<stdio.h>
int main(void)
{
int input=0;
while(input=getchar()) //TARGET
printf("%d\n",input);
}
Run Code Online (Sandbox Code Playgroud)
我有意使用没有循环!=EOF。我想知道在按ctrl + d之后设置了什么位,因为即使没有输入任何输入,它仍会打印-1-表示必须为使getchar()反复返回-1的流设置了一些错误位-我想知道那是什么。以及整个事情的背后是什么。
加上如何再次将流重置为正常状态。
它是Linux上的输入。
在 CPP 入门或其他网站中,我发现count(来自mapSTL)定义的语言非常含糊和误导:
在容器中搜索键等于 k 的元素并返回匹配的数量
现在我到目前为止所研究的key是奇异值,映射值也是如此——映射值可以通过赋值来改变。
那么它不只是返回容器是否包含密钥吗?而不是计数?我对这个概念的理解错在哪里?
我读到this指针是一个const pointer(听起来很合逻辑),它可以让我们更改其指向的对象,但不能更改其持有的地址。但是当我这样做时:
#include<iostream>
using namespace std;
class A
{
int val;
public:
class A* fun()
{
return this;
}
};
int main()
{
class A objA;
class A objB;
*(objA.fun())=objB;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
即使返回的指针包含的地址objA,也很容易保留的地址objB。简单变量的类似代码如何失败:
int main()
{
int i;
int *const p=&i;
p=&i;
return 0;
}
Run Code Online (Sandbox Code Playgroud) 第一个文件:
//a.c
const int i = 9; //Just contains the variable definition
Run Code Online (Sandbox Code Playgroud)
第二个文件:
//b.c
#include<stdio.h>
extern int i;
int main()
{
int *ptr = &i;
printf("Before: %d\n",i);
*ptr = 99;
printf("After: %d\n",i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我原本期望在bc中const出现限定符错误/警告extern int i;和只读内存修改错误,但编译却进展顺利。*ptr = 99;
第一个打印语句打印良好,但第二个打印语句出现分段错误。
为什么它没有在编译阶段崩溃并出现预期的错误,而是给出分段错误?
注意 - GCC 8.3.0
我在某处找到的这些表达是什么意思,我找不到任何有效的搜索结果可通过示例或任何方式来了解它们:
(*)[15] //how is this defined/used
Run Code Online (Sandbox Code Playgroud)
和
int (*fun)(int)[1]
Run Code Online (Sandbox Code Playgroud)
第二个是函数指针,但最后是什么意思[1]?