我之前从未使用过Perl,而且我有一个基本问题.
my $string1 = "Hi. My name is Vlad. It is snowy outside.";
my @array = split('.' $string1); ##essentially I want this, but I want the period to be kept
Run Code Online (Sandbox Code Playgroud)
我想把这个字符串拆分为'.' 但我想保持这个时期.怎么能实现呢?
可能重复: char指针和数组的堆栈指针差异
为了说明我的问题:
int main(void){
int myary[20];
int *myaryPtr;
myaryPtr = myary;
sizeof(myary); // Will it return 80? Correct?
sizeof(myaryPtr); // Will it return 4? Correct?
return 0;
}
Run Code Online (Sandbox Code Playgroud)
首先,我的假设是否正确?
然后假设我的假设是正确的,详细解释是什么?据我所知,我的20个元素数组是80个字节,但这个名称myary不仅仅是指向数组第一个元素的指针吗?所以不应该是4吗?
我的问题基于以下代码:
int myfunct(int ary[], int arysize)
int myfunct2(int *ary, int arysize)
int main(void){
int numary[10];
myfunct(numary, 10)
myfunct2(numary, 10)
return;
}
int myfunct(int ary[], int arysize) {
//Whatever work is done
}
int myfunct2(int *ary, int arysize) {
// Whatever work is done
}
Run Code Online (Sandbox Code Playgroud)
是否有理由使用其中一个而不是另一个?详细说明,当涉及数值数组时,有任何理由想要在数组表示法上使用指针表示法.如果一个人使用指针表示法,那么在函数指针运算中将使用等等.如果使用[]数组表示法,可以像往常一样使用数组.我是编程新手,我目前看不到使用指针表示法有什么好处.
我的确切问题是,有没有理由使用指针表示法将数值数组传递给函数,因此在函数中使用指针操作.
传统上,我用c ++和Java编程,现在我开始学习ruby.
那么我的问题是,像ruby这样的语言如何在内部实现它们的数组和哈希数据结构,以便它们可以同时保存任何类型?我知道在Java中,每个类都是从对象派生的,这可能是实现这一点的一种方法,但我想知道是否还有其他方法.例如,在c ++中,如果我想实现一个可以同时保存多种类型值(无关系)的动态数组,我该怎么做呢?
为了澄清,我不是指通用编程或模板,因为它们只是为类型创建一个新的集合接口.我指的是这样的结构:
array = [1, "hello", someClass];
int **twoDary = (int**) (malloc(rows * sizeof(int *)));
int **twoDaryStart = twoDary;
int *currentrow;
for ( i = 0; i < rows; i++ ){ // Originally: for (i = 0; i < columns; i++)
*(twoDary + i) = (malloc(columns * sizeof(int)));
}
for (j = 0; j < rows; j++) {
currentrow = *(twoDary + j);
for ( i = 0; i < columns; i++ ) {
*(currentrow + i) = i;
printf("%d\n", *(currentrow+i));
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个动态的二维数组.然后我尝试将i,当前i(在内部for循环中)分配给每一行中的每个元素.所以我的输出应该是数字0 - 列打印行时间.
如果我的行和列不相同,即5行10列,我会一直遇到seg错误.任何人都可以从这个代码中看到为什么会发生这种情况?
addl, $9, _x(%rip)
Run Code Online (Sandbox Code Playgroud)
_x是一个全局变量.基本上我不确定在这种情况下如何实现添加到全局变量以及在多处理器系统中是否存在与此线路相关的固有竞争条件.