当我突然想到指针只是一个存储变量的内存地址的变量时,我正在读指针,所以每个整数都应该作为指针.然后我创建了一个小程序,它发出警告,但它以某种方式工作.
int main()
{
int i,j;
i=3;
j=&i;
printf("%d\n%d\n%d",i,j,&i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是
3
1606416600
1606416600
Run Code Online (Sandbox Code Playgroud)
那么,为什么要添加额外的*如果正常的int工作呢?
另一个问题是关于以下计划的输出
int main()
{
int a[] = {1,2,3,4,5,6,7};
int *i,*j;
i=&a[1];
j=&a[5];
printf("%d\n%d\n%d",j,i,j-i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
1606416580
1606416564
4
Run Code Online (Sandbox Code Playgroud)
为什么ji = 4而不是16?
当我陷入困境时,我正在解决HackerRank上的问题.
问题陈述
您将获得一个2D矩阵,a,维度为MxN,正整数为R.您必须将矩阵旋转R次并打印结果矩阵.旋转应沿逆时针方向旋转.
4x5矩阵的旋转由下图表示.请注意,在一次旋转中,您必须仅将元素移动一步(请参阅样本测试以获得更清晰).

保证M和N的最小值是偶数.
输入
第一行包含三个空格分隔的整数,M,N和R,其中M是行数,N是矩阵中的列数,R是矩阵必须旋转的次数.然后是M行,其中每行包含N个空格分隔的正整数.这些M行代表矩阵.
产量
打印旋转的矩阵.
约束
2 <= M, N <= 300
1 <= R <= 10^9
min(M, N) % 2 == 0
1 <= aij <= 108, where i ? [1..M] & j ? [1..N]'
Run Code Online (Sandbox Code Playgroud)
我试图做的是将圆圈存储在一维数组中.像这样的东西.
while(true)
{
k = 0;
for(int j = left; j <= right; ++j) {temp[k] = a[top][j]; ++k;}
top++;
if(top > down || left > right) break;
for(int i = top; i <= down; ++i) {temp[k] = a[i][right]; ++k;}
right--; …Run Code Online (Sandbox Code Playgroud) 我正在阅读有关计数排序的算法,其中一个步骤是
for(i = 1 to k)
c[i] = c[i]+c[i-1];
Run Code Online (Sandbox Code Playgroud)
为什么我们需要这一步?
为什么我们不能使用它
for(i = 0 to k)
while(c[i]--)
Output i/Use i as key.
Run Code Online (Sandbox Code Playgroud)
我想到的一个问题是,我们是否需要数据本身(可能就像引用特定索引的字符串一样)。
但是之后,我们可以使用2D向量。在这种方法中,我们将数据从0到99进行排序有什么不好的地方。
int a[100];
for(int i = 0 ; i < 100; ++i)
a[i] = 0;
string s;
vector<vector<string>> data(100);
int temp;
for(int i = 0 ; i < n ; ++i){
cin>>temp;
a[temp]++;
getline(cin,s);
data[temp].push_back(s);
}
for(int i = 0 ; i < 100; ++i){
int current = 0;
while(a[i]--){
cout<<data[i][current]<<" ";
++current;
}
}
Run Code Online (Sandbox Code Playgroud) 嘿,我正在关注来自新浪的Android学习系列.我就是这个部分:http://www.youtube.com/watch?feature = player_embedded&v = QjQg8NkHGbw
现在,我想做的是在某处(代码或文件中)保存一些基本颜色,如红色,绿色等,并分配它们的十六进制代码.
就像用户在'edittext'中键入"red"一样,我希望将"red"的值存储为"#FF0000"(就像C++中的#define一样),依此类推蓝色,绿色等.
我已经熟悉C++中的文件处理,但这看起来完全不同.
我不知道如何存储本身就是字符串的字符串的值.
我真的很沮丧这个错误.我几乎不可能找到.
代码很简单.我正在尝试使用导航抽屉.
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout
android:id="@+id/main_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<ListView
android:id="@+id/navigationdrawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#111"
android:divider="@android:color/transparent"
android:dividerHeight="0dp" />
Run Code Online (Sandbox Code Playgroud)
要向ListView添加项目,我添加了一个字符串数组和string.xml
<resources>
<string name="app_name">Test</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
<string-array name="Contents">
<item>Calculator</item>
<item>About Us</item>
</string-array>
</resources>
Run Code Online (Sandbox Code Playgroud)
然后在MainActivity.java中
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends Activity {
String[] drawerListItems;
ListView drawerList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
drawerListItems = getResources().getStringArray(R.array.Contents);
drawerList = (ListView) findViewById(R.id.navigationdrawer);
ArrayAdapter<String> aa = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,drawerListItems);
drawerList.setAdapter(aa);
setContentView(R.layout.navigation);
} …Run Code Online (Sandbox Code Playgroud)