我不知道我的程序出错了什么,所以它没有输出它的输出意义。
我编写了一个程序,将一个值插入到数组中的特定点,使用此代码可以正常工作,
class AppDelegate: UIResponder, UIApplicationDelegate, PKPushRegistryDelegate {
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
self.voipRegistration()
}
func voipRegistration() {
let mainQueue = DispatchQueue.main
let voipRegistry: PKPushRegistry = PKPushRegistry(queue: mainQueue)
voipRegistry.delegate = self
voipRegistry.desiredPushTypes = [PKPushType.voIP]
}
func pushRegistry(_ registry: PKPushRegistry, didInvalidatePushTokenFor type: PKPushType) {
//
}
func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType) {
//
}
func pushRegistry(_ registry: PKPushRegistry, didUpdate pushCredentials: PKPushCredentials, for type: PKPushType) {
//
}
func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void) {
//
}
以下是该程序的输出:
但如果我改变数组大小,即7,则会发生这种情况:
#include <iostream>
using namespace std;
main() {
int arr[] = {1,3,5,7,8};
int item = 10, k = 3, n = 5;
int i = 0, j = n;
cout<<"The original array elements are :\n";
for(i = 0; i<n; i++) {
cout<<"arr["<<i<<"] = "<< arr[i] <<"\n";
}
n = n + 1;
while( j >= k) {
arr[j+1] = arr[j];
j = j - 1;
}
arr[k] = item;
cout<<"The array elements after insertion :\n";
for(i = 0; i<n; i++) {
cout<<"arr["<<i<<"] = "<< arr[i] <<"\n";
}
}
以上程序的输出:
我无法理解在这个程序中出现这样的异常/错误我做错了什么。
答案 0 :(得分:3)
int arr[] = {1,3,5,7,8};
此数组的大小为5,因为其初始值设定项有5个元素。获得额外元素的 only 数组是字符串文字:"abc"
是一个4 char
的数组,其中0是第四个元素。此数组不是字符串文字。当代码写入数组末尾时,程序的行为是未定义的。
你可以通过说它确实包含六个元素:
int arr[6] = {1,3,5,7,8};
此数组中最后一个元素的值为0。
答案 1 :(得分:2)
只保留您编码的重要部分或多或少:
int arr[] = {1,3,5,7,8,9,6};
int n = 7;
n = n + 1;
for(i = 0; i<n; i++) {
cout<<"arr["<<i<<"] = "<< arr[i] <<"\n";
}
数组具有固定大小。您无法更改它,因此您也无法将元素“插入”到数组中。您的arr
有7个元素,当您访问arr[7]
(在循环内)时,您正在访问数组的边界。这是未完成的行为,您的代码可以输出任何内容。
如果要将元素插入动态大小的数组中,请查看std::vector
。