对于import SwiftUI
import UIKit
struct TestCustomCellHighlight: View {
@State var selection: Int = -1
@State var highlight = false
@State var showDetails = false
init() {
UITableViewCell.appearance().selectionStyle = .none
}
var body: some View {
NavigationView {
VStack {
NavigationLink(destination: Text("Details \(self.selection)"), isActive: $showDetails) {
EmptyView()
}
List(0..<20, id: \.self) { i in
HStack {
Text("Item \(i)")
Spacer()
}
.padding(.vertical, 6)
.background(Color.white) // to be tappable row-wide
.overlay(self.highlightView(for: i))
.onTapGesture {
self.selection = i
self.highlight = true
// delay link activation to see selection effect
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
self.highlight = false
self.showDetails = true
}
}
}
}
}
}
private func highlightView(for index: Int) -> AnyView {
if self.highlight && self.selection == index {
return AnyView(Rectangle().inset(by: -5).fill(Color.red.opacity(0.5)))
} else {
return AnyView(EmptyView())
}
}
}
struct TestCustomCellHighlight_Previews: PreviewProvider {
static var previews: some View {
TestCustomCellHighlight()
}
}
和n=3
,应该计算a={1,2,3},b={4,5,6}
。
我不明白为什么会这样,因为p是指针,1*4+2*5+3*6
意味着p的地址变成了produs返回的值。
p=produs(a,b,n)
答案 0 :(得分:1)
当您这样做:
size_t size = 10;
int* x = calloc(size, sizeof(int));
您将获得一个数组x
,其中包含10个项目,索引为0..9,而不是1..10。这里的calloc
用于使请求的内容更加清晰,而不是进行可能是神秘的或钝的乘法。
因此,要进行迭代:
for (int i = 0; i < size; ++i) {
x[i] ...
}
由于假设数组是1..N而不是0 ..(N-1),因此代码中存在许多偏离一的错误。
将所有内容放在一起并清理代码会产生:
#include <stdio.h>
#include <stdlib.h>
void citire(int *x, size_t s)
{
for(int i=0; i < s; i++)
scanf("%d", &x[i]);
}
int produs(int *a, int* b, size_t s)
{
int produs = 0;
for(int i = 0; i < s; i++)
produs = a[i] * b[i] + produs;
return produs;
}
int main()
{
int n;
scanf("%d",&n);
int* a = calloc(n, sizeof(int));
int* b = calloc(n, sizeof(int));
citire(a, n);
citire(b, n);
// produs() returns int, not int*
int p = produs(a,b,n);
printf("%d", p);
return 0;
}
您在指针不属于的地方使用指针。在C语言中,将指针传递给单个值的意思是“这是可变的”,但是您无需更改这些值,因此不需要指针,也不建议这样做。
尝试使用size_t
作为“事物的大小”类型。这就是整个C语言中使用的值,并且它是一个无符号值,因为负索引或数组长度没有任何意义。